Получил страницу сайта. В ней есть следующая строка
<div class="about"> <h3>Алиса</h3>
Нужно получить "Алиса". Как это сделать с помощью регулярного выражения?
Сделал следующее: <div class="about"><h3>(.*)</h3>
где:
(...) Группировка (группа)
. Любой символ (символ точки)
x Игнорировать пробелы
\s Пробельный символ (в т.ч. табуляция)
Но uvsoftium.ru не хочет определять... Почему?
Дальнейшие действия хочу производить через preg_match_all:
preg_match_all('#<div class="about"><h3>(.*)</h3>#x', $content[$i], $matches[$i][1], PREG_PATTERN_ORDER);
Результатом возвращает пустой массив.
В вашем случае проблема в символе /. Он является служебным, и его необходимо экранировать: \/.
Так же в исходной строке между <div class="about"> и <h3> присутствует пробел, который не учитывается в вашем регулярном выражении. Пробельные символы могут быть разные, поэтому для пространства пробельных символов есть специальная конструкция \s.
Для вашей группы я бы советовал использовать жадный алгоритм поиска: <h3>(.*?)</h3>. Т.к. в вашем случае в исходном тексте вида: <div class="about"> <h3>Алиса</h3> <h3>Лена</h3> </div>, будет найдено: Алиса</h3> <h3>Лена.
Итого выражение: /<div class="about">\s*<h3>(.*?)<\/h3>/.
Скорее всего я не учёл все проблемы. Но надеюсь я ответил на ваш вопрос.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости