2017-02-03 9 views
1

У меня есть следующий pregmatch:PHP матч PREG точно

$search = 310850; 

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

ответ содержит много вещей, но она содержит 310850, а также 3108502 и 31085.

к информации: $ response содержит HTML-страницу с много элементов, которые содержит $ search

Как я могу убедиться, что я получаю матч на 310850, а не всех остальных?

EDIT:

Как разрешить символы < и > быть рядом с поиском? они могут быть завернуты на 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 a целая html-страница – maria

+0

посмотрите ближе, это набор тестовых примеров для отображения вывода для разных входов – jancha

 Смежные вопросы

  • Нет связанных вопросов^_^