Есть html-страница, в ней таблица.
В таблице обычные строки <tr></tr>
<table>
<TR>
<TD>some_content</TD>
<TD>some_content fio some_content</TD>
<TD>some_content</TD>
</TR>
</table>
Вопрос: как вырезать td, в котором есть слово fio?
Вопрос бы не задавал, но следующая регулярка просто не работает:
`<td>.*fio.*</td>`Uuis
Она захватывает от самого первого TD сверху.
Примечание:
они все уже "жадные" за счет модификатора U
Примечание:
'`.*?`' это тоже самое что и '`.*`U'
Примечание:
Тут бы подошло что-то вроде - вырезать кусок, в котором не присутствует строка "<td>".
Примечание:
Nemo22
твоя регулярка сработала только потому, что она не учитывала соседние строки. Контент же нужно было вопринимать через модификатор "is", а не через "i", но я, конечно, упустил этот вопрос, так что все ок.
Собственно правильный вариант такой (мне подсказали его в моем соседнем вопросе):
$site_content = '
<table>
<TR>
<TD>some_content</TD>
<TD>
some_content fio
some_content
</TD>
<TD>some_content</TD>
</TR>
</table>
';
$my_word = 'fio';
$global_pattern = '`(<td>((?!<td>).)*?' . addslashes($my_word) . '.*?</td>)`uis';
preg_match($global_pattern, $site_content, $matches);
$result_td = $matches[1];
var_dump($result_td);
exit;
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.