PHP preg_match_all html - PullRequest
       6

PHP preg_match_all html

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

как я могу создать шаблон регулярного выражения preg_match_all для php, чтобы дать мне этот код?

<td class="class2">&nbsp;</td>
<td class="class2" align="right"><span class="DarkText">I WANT THIS TEXT</span></td>

Чтобы получить текст внутри класса span?спасибо!

Ответы [ 3 ]

7 голосов
/ 16 сентября 2010

Вы можете использовать:

preg_match_all("!<span[^>]+>(.*?)</span>!", $str, $matches);

Тогда ваш текст будет внутри первой группы захвата (как видно на rubular )

С этим вне путиобратите внимание, что регулярное выражение не должно использоваться для анализа HTML .Вам будет лучше использовать синтаксический анализатор XML, если только это не что-то действительно очень простое.

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

Трудно написать регулярные выражения, которые отлично разбирают HTML.Вместо этого используйте HTML-парсер, подобный этому: http://simplehtmldom.sourceforge.net/. Он прост в использовании, и я рекомендовал его несколько раз здесь.

0 голосов
/ 15 января 2019

Вы также не можете использовать ! в начале и в конце, и использовать гораздо более простой код с T-Regx

$pattern = "<span[^>]+>(.*?)</span>"; // no delimiters :)

$string = '
<td class="class2">&nbsp;</td>
<td class="class2" align="right"><span class="DarkText">I WANT THIS 
TEXT</span></td>
';

Тогда просто используйте match()->group():

$text = Pattern::of($pattern)->match($string)->group(1)->first();

$text // 'I WANT THIS TEXT'

Проверить онлайн: https://regex101.com/r/nxTvS1/1

...