Сопоставлять числа в содержимом HTML (не в атрибутах тегов) с REGEX в PHP - PullRequest
1 голос
/ 03 сентября 2010

У меня проблема!Я хочу обнаружить любые цифры в содержимом HTML без цифр в атрибутах тега, я хочу изменить эти цифры на другие символы, а не только цифры, не входящие в атрибуты тегов HTML, которые соответствуют этому REGEX.

Пример:

Hi 3456; <a href="?id=4456">your code: 345</a> 

Совпадает 3456, Несоответствие 345 4456

Спасибо всем

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

Лучше использовать парсер, например PHP Simple HTML DOM Parser .Причины изложены в этом блоге .

0 голосов
/ 03 сентября 2010

Вот быстрый грязный способ, который будет работать для простых примеров и для действительного html и, вероятно, вызовет проблемы с недействительным html:

<?php
$html='Hi 3456; <a href="?id=4456">your code: 345</a> another 234';

$html = preg_replace('|(>[^<\d]*)(\d+)([^<\d]*</)|', '$1{NUM_WAS_HERE}$3', $html);//match between tags
$html = preg_replace('|^([^<\d]*)(\d+)([^<\d]*<)|', '$1{NUM_WAS_HERE}$3', $html);//beginning of the string
$html = preg_replace('|(>[^<\d]*)(\d+)([^<\d]*)$|', '$1{NUM_WAS_HERE}$3', $html);//end of the string

echo $html, "\n";//outputs: Hi {NUM_WAS_HERE}; <a href="?id=4456">your code: {NUM_WAS_HERE}</a> another {NUM_WAS_HERE}

Как рекомендовано @Reinis, использование html-парсера является надежнымспособ достижения этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...