2013-07-17 31 views
0

我一直在试图弄清楚这一点真的很难,我不能用一个解决方案出来后, 我有一个字符串arrary是PHP表达式的preg_match

"Descripcion 1","Description 2" 

,我需要用数字来过滤,因此我想也许我可以用preg_match(),并且在那里正好是1号1或两个或等时,做我的逻辑,becouse字符串前面的数字可能会改变,但数量不能,我已经尝试使用

preg_match(" 1{1}","Description 1") 

这是suppossed时返回真正的时候在一个空格后紧跟一个字符串“1”,但返回false。

也许你们中有些人在PHP中使用正则表达式有更多的经验,可以帮助我。

非常感谢您提前。

+0

请张贴和数据的示例阵列。 –

+0

尝试这个''/ 1 /'' – elclanrs

+1

fyi,在正则表达式中'{1}'总是不必要的。这是默认设置。 – ThiefMaster

回答

2

你可以使用strpos而不是preg_match!

foreach($array as $string) { 
    if(strpos($string, ' 1') !== false) { 
     //String contains " 1"!! 
    } 
} 

这比正则表达式要快得多。 或者,如果数字是在字符串的结尾:

foreach($array as $string) { 
    if(substr($string, -2) == ' 1') { 
     //String ends with " 1"!! 
    } 
} 
1

你忘了正则表达式的分隔符。改为使用preg_match('/ 1/', ...)

但是,如果您只想测试一个字符串是否包含在另一个字符串中,则根本不需要正则表达式!请参阅Lars Ebert's answer

0

您可能使用

if (preg_match('/(.*\s[1])/', $var, $array)) { 
     $descrip = $array[1]; 
    } else { 
     $descrip = ""; 
    } 

我测试上descripcion 1的3个单独的字符串值以上的正则表达式有成功,thisIsAnother 1,andOneMore 1.每个被发现是由表达真并保存到组1.

正则表达式的代码的解释是:
()匹配括号之间的正则表达式,并捕获匹配成反向引用编号1
*匹配任何单个字符不是一个换行字符。是吐温零和多次可能的(贪婪)
\ S匹配单个空白字符(空格,制表,换行)
[1]匹配的字符1