2017-02-03 48 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