2017-02-03 79 views
1

我有以下pregmatch:PHP預浸嚴絲合縫

$search = 310850; 

if (preg_match("/\b$search\b/i", $response)) { 
     echo "match !"; 
    } else { 
     echo "NO MATCH"; 
    } 

響應包含的很多事情,但它包含310850310850231085

到的信息:$ response包含了很多含有$ search

我怎樣才能確保我得到310850匹配的元素,而不是所有的人一個HTML頁面?

編輯:

如何能讓人物<>被旁邊的搜索? 他們可以ded123>number<blabla

+0

不要工作邊界限制匹配整個單詞?請參閱[本演示](https://ideone.com/N9vpPN)。 –

+0

它應該這樣工作,有什麼問題? – Toto

+0

@Toto它匹配所有比搜索詞更長或更短的數字。我不想那 – maria

回答

0
<?php 

$search = 310850; 

$responses = ["310850"," 310850 ", "0310850","3108501", 

"<html> 
<a href='google.com'>310850</a> 
</html> 
"]; 

function test($search, $response){ 
    echo $response,": "; 
    if (preg_match("/([^0-9]+|^)$search([^0-9]+|$)/i", $response)) { 
     echo "match !"; 
    } else { 
     echo "NO MATCH"; 
    } 
    echo "\n"; 
} 

foreach($responses as $response){ 
    test($search, $response); 
} 

輸出包裹:

php -q a.php 
310850: match ! 
310850 : match ! 
0310850: NO MATCH 
3108501: NO MATCH 
<html> 
<a href='google.com'>310850</a> 
</html> 
: match ! 
+0

響應不是數組,ITS是一個數組整個html頁面 – maria

+0

看起來更接近,它是一組測試用例來顯示不同輸入的輸出 – jancha