2013-07-17 30 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