Соответствие регулярному выражению HTML обернуто вокруг HTML - PullRequest
0 голосов
/ 20 декабря 2010

Я недавно здесь спрашивал о сопоставлении текста внутри двух обернутых тегов <code>.. из строки, и он прекрасно работал, пока кто-то не обернул другой HTML-код внутри тегов <code>.

Вот как я это делаю до сих пор:

preg_match_all("!<code>([^<]*)</code>!", $string, $return_array);

Может ли кто-нибудь улучшить этот обычный опыт.решить мою проблему?:)

Спасибо заранее!

Ответы [ 2 ]

4 голосов
/ 20 декабря 2010

Это один случай, когда я должен согласиться с ужасным регулярным выражением, злым мемом. Для простых целей извлечения часто подходят регулярные выражения. Но если вы хотите обрабатывать искаженный и / или вложенный HTML, это не вариант без значительной суеты.

Следовательно, я бы рекомендовал использовать phpQuery или QueryPath для таких случаев. Это также довольно просто:

print qp($html)->find("code")->text();
0 голосов
/ 20 декабря 2010

Вы пробовали это?

preg_match_all("!<code>(.*?)</code>!", $string, $return_array);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...