Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Выделить теги html в PHP

15K
13 марта 2006 года
Deker
4 / / 13.03.2006
Есть стока $html_code. В ней исходник html страницы. Как мне выделить все html теги из нее и занести в отдельный массив.
Пробовал так
 
Код:
eregi("<(.+)>", $html_code, $tags);

Но на выход получал то же самое, что на вход, потому что он находит ВСЕ между первым < и последним > включая сами <>. Помогите плиз решить проблему.
583
13 марта 2006 года
#define
150 / / 03.12.2002
Ну, во-первых:
Цитата:
preg_match(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to ereg().



Во-вторых, являение, которое вы описали называется "жадностью" (Greedy) регулярных выражений. Чтобы ее ограничить, нужно указать модификатор U (в Perl-compatible регэкспах).

Итого, попробуй так:

 
Код:
preg_match('#<(.+)>#sU', $html_code, $tags);
print_r($matches);

Модификтор 's' указывает на то, что точка будет соответствовать любому символу, включая перевод строки (это на случай если таг разорван на несколько строк).
583
13 марта 2006 года
#define
150 / / 03.12.2002
В print_r($matches) неправильно переменную указал :)
В вашем случае print_r($tags).
12
14 марта 2006 года
alekciy
3.0K / / 13.12.2005
Если мне не изменяет склероз, то preg_match после нахождения первого вхождения подстроки прекратит свою работу. Т.е. будет выделено содержание первого найденого тега, но ни как не всех.
15K
14 марта 2006 года
Deker
4 / / 13.03.2006
#define, спасибо огромное. Теперь все работает. Только alekciy прав - надо использовать
 
Код:
preg_match_all ('#<(.+)>#sU', $html_code, $tags1);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог