2010-09-16 16 views
0

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

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

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

+0

Является ли это единственным классом span в текстовой строке? – NullUserException

+2

xpath намного лучше подходит для этой задачи. –

+1

Пожалуйста, не используйте регулярные выражения для анализа HTML. Это путь к печали и сломанному коду. –

ответ

7

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

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

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

С, что из Кстати, обратите внимание, что regex shouldn't be used to parse HTML. Вам будет лучше использовать синтаксический анализатор XML, если это не так, действительно просто.

+0

+1 для ответа и указания на лучшее решение (парсер). И за включение ссылки на знаменитый ответ Бобинса. – alex

1

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