2014-02-06 50 views
1

所以我試圖解析從外部網頁中提取的一系列數字。雖然呼應$元素顯示正確的表達preg_match表達式包括空格

preg_match('#([0-9]{3}\s[0-9]{3}\s[0-9]{3}){1}#', $element, $match); 

不會返回任何結果:

341 102 408 AAA Bccc 

當然,當我嘗試用上面的字符串上述正則表達式在線正則表達式測試,我得到了預期的結果。 .. 我在想,可能會有一個看不見的空白空間,但找不到它。我得到真的瘋了......

編輯:

奇怪的是這不會刪除輸入字符串的每一個空格,除了我試圖提取表達式:

$element = preg_replace("/\s/", "", $element); 
+0

對輸入字符串執行'var_dump'。 – anubhava

+1

你知道'preg_match'不會返回結果嗎?在你的例子中'$ match'將是一個包含匹配的數組 – desbo

+0

否則你可以從結尾刪除{1}。這是默認設置。 –

回答

2

嘗試

preg_match('#([0-9]{3}\s+[0-9]{3}\s+[0-9]{3}){1}#u', $element, $match); 

使正則表達式引擎支持Unicode,並允許多個數字之間的空格字符;也許你有一些非ASCII的空白。

這就是說,你可以將此減少

preg_match('#(?:[0-9]{3}\s+){2}[0-9]{3}#u', $element, $match); 

,你會發現比賽結果$match[0],如果它成功了。

+0

這樣做的工作。非常感謝! – kaYko