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

Ваш аккаунт

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

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

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

regexp в php

6.8K
05 марта 2005 года
filthy_arys
13 / / 26.11.2004
проблема раз:

дано "<tag>111</tag>". надо выделить все что между ними. пишем ~<tag>(.*)</tag>~. все выделается.

если будем разбирать файл типа:

<tag>111</tag>
<tag>222</tag>
<tag>333</tag>
<tag>444</tag>

(то есть несколько строк с одним вхождением пары тегов)то тоже все хорошо. в массив уйдет [0] => "111", [1] => "222" и тд. НО! если будет разбирать строку с двумя (и более) вхождениями пар тегов, например "<tag>111</tag> блабла <tag>222</tag>" то в массив уйдет [0] => "111</tag> блабла <tag>222".

как быть?

вопрос 2:

есть текст:

блабла
блабла <tag1>1111</tag1> блабла
блабла <tag2>2222</tag2> блабла
блабла
блабла <tag1>3333</tag1> блабла
блабла <tag2>4444</tag2> блабла

надо выделить (1111,2222,3333,4444).
выражение типа ~.*<tag1>(.*)</tag1>.*<tag2>(.*)</tag2>.*~ не прокатывает Ж)хотя по отдельности все прекрасно.
4
05 марта 2005 года
mike
3.7K / / 01.10.2002
Код:
<?
$s="
блабла
блабла <tag1>1111</tag1> блабла
блабла <tag2>2222</tag2> блабла
блабла
блабла <tag1>3333</tag1> блабла
блабла <tag2>4444</tag2> блабла"
;

preg_match_all("/<tag1>([^<]*)<\/tag1>/",$s,$r,PREG_PATTERN_ORDER);
print_r($r[1]);

preg_match_all("/<tag2>([^<]*)<\/tag2>/",$s,$r,PREG_PATTERN_ORDER);
print_r($r[1]);
?>
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог