Как получить содержимое тега <h3> в <div class=“about”>?

169
04 июня 2019, 23:10

Получил страницу сайта. В ней есть следующая строка

<div class="about"> <h3>Алиса</h3>

Нужно получить "Алиса". Как это сделать с помощью регулярного выражения?

Сделал следующее: <div class="about"><h3>(.*)</h3>

где:

(...) Группировка (группа)

. Любой символ (символ точки)

  • Ноль и более раз a

x Игнорировать пробелы

\s Пробельный символ (в т.ч. табуляция)

Но uvsoftium.ru не хочет определять... Почему?

Дальнейшие действия хочу производить через preg_match_all:

preg_match_all('#<div class="about"><h3>(.*)</h3>#x', $content[$i], $matches[$i][1], PREG_PATTERN_ORDER);

Результатом возвращает пустой массив.

Answer 1

В вашем случае проблема в символе /. Он является служебным, и его необходимо экранировать: \/.

Так же в исходной строке между <div class="about"> и <h3> присутствует пробел, который не учитывается в вашем регулярном выражении. Пробельные символы могут быть разные, поэтому для пространства пробельных символов есть специальная конструкция \s.

Для вашей группы я бы советовал использовать жадный алгоритм поиска: <h3>(.*?)</h3>. Т.к. в вашем случае в исходном тексте вида: <div class="about"> <h3>Алиса</h3> <h3>Лена</h3> </div>, будет найдено: Алиса</h3> <h3>Лена.

Итого выражение: /<div class="about">\s*<h3>(.*?)<\/h3>/.

Скорее всего я не учёл все проблемы. Но надеюсь я ответил на ваш вопрос.

READ ALSO
Mysql пересечение касание

Mysql пересечение касание

Есть таблица поездок курьеров из Москвы в уездный город N

140
Отловить ошибку в Laraval 5.7 и SftpAdapter

Отловить ошибку в Laraval 5.7 и SftpAdapter

Есть код для подключения по sftp:

167
Yii2::вывод изображений=)

Yii2::вывод изображений=)

Ребят здравствуйтеизучаю yii2 ,паралельно делая в нем свой проект

133
Warning: Illegal string offset &#39;code&#39;

Warning: Illegal string offset 'code'

Возникает ошибка Warning: Illegal string offset 'code'

133