Forum Webscript.Ru

Программирование => Регулярные выражения => Тема начата: CGVictor от 25 Декабря 2003, 16:37:30

Название: почти xml...
Отправлено: CGVictor от 25 Декабря 2003, 16:37:30
Задача, собственно, следующая:

Необходимо получить из текста все вхождения вида:

<$starttag>$somecontent<$endtag>


$starttag и $endtag известны.
$somecontent надо получить.

Вхождений может быть больше одного.

В регулярных я не силен, так что очень желателен "рассказ с показом"... Ну обьясните please...
И, если возможно, с уклоном в PHP.

Заранее спасибо.
Название: почти xml...
Отправлено: Макс от 25 Декабря 2003, 18:14:08

$txt = " some content
second
next content ";
$start_tag = \'starttag\';
$end_tag = \'endtag\';
preg_match_all("~(?<=<".$start_tag.">).+?(?=<".$end_tag.">)~si", $txt, $m);
print_r($m);
Название: почти xml...
Отправлено: Макс от 25 Декабря 2003, 18:16:49
похоже у форума какая-то баго-фича : в комбинацию "знак больше и скобка" он  вставляет пробел.
>) - должно быть везде без пробела между ними
Название: почти xml...
Отправлено: Yukko от 25 Декабря 2003, 18:20:12
на вскидку:
$content = "somecontent
   somecontent1
   somecontent2";
preg_match_all("/([^<>]*)/i", $content, $matches);
print_r($matches);

[^<>]* означает что совпадут любые символы, кроме < и >

долго писал... Макс ответил :)
Название: почти xml...
Отправлено: Yukko от 25 Декабря 2003, 18:26:18
Макс
я бы .+? не писал,
Название: почти xml...
Отправлено: Макс от 25 Декабря 2003, 18:39:11
Yukko
предложи альтернативу
Название: почти xml...
Отправлено: Yukko от 25 Декабря 2003, 18:44:32
Макс
все зависит от того, что у него будет между тегами :)

Цитировать
Макс:
предложи альтернативу

[^<>]+
Название: почти xml...
Отправлено: CGVictor от 26 Декабря 2003, 12:07:43
А если между тегами будут еще и другие подобные конструкции, типа:

text

???
Название: почти xml...
Отправлено: Yukko от 26 Декабря 2003, 16:27:00
Твой ответ, ИМХО, тут:
http://xpoint.ru/forums/programming/PHP/thread.xhtml?id=22322
http://xpoint.ru/forums/programming/PHP/thread/23963.xhtml
Название: почти xml...
Отправлено: CGVictor от 26 Декабря 2003, 16:38:07
Там люди сошлись на парсере ХМЛ. Я, в принципе, тоже на другое и не надеялся.
Спасибо.