Получил страницу сайта. В ней есть следующая строка
<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>/
.
Скорее всего я не учёл все проблемы. Но надеюсь я ответил на ваш вопрос.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок