трабл с regexp, надо составить регулярное выражение

sanch

Новичок
трабл с regexp, надо составить регулярное выражение

Админ локалки попросил написать скрипт который будет брать данные о последнем посте из БД форума на движке IPB записывать их в текстовый файл,
а потом уже этот текстовый файл пойдет в виде новостей на хабе DC++.
я его написал, но там надо фильтровать теги, которые содержаться в теле поста.
например, возмем фильтрацию тегов цитат.
надо сделать чтоб из поста убирались все цитаты.
я пробовал так:
PHP:
$msg = ereg_replace("<!--quoteo(.)+<!--QuoteEEnd-->","",$msg);
когда в тексте одна цитата работает нормально,
но если в тексте идет цитата, потом текст, потом цитата удаляется все и цитаты и обычный текст между ними.
пробовал так
PHP:
$msg = ereg_replace("<!--quoteo[^<]+<!--QuoteEEnd-->","",$msg);
вообще ничего не удаляет.
Пробовал другие конструкции, но нужного результата не получил
Поможите кто чем может, заранее спасибо.
 

sanch

Новичок
прочел,
U (PCRE_UNGREEDY) Этот модификатор инвертирует жадность квантификаторов, таким образом они по умолчанию не жадные. Но становятся жадными, если за ними следует символ '?'. Такая возможность не совместима с Perl. Модификатор U также может использоваться внутри шаблона, при помощи '?U' записи.
попробовал так
PHP:
$msg = ereg_replace("/<!--quoteo(.)+<!--QuoteEEnd-->/?U",'',$msg);
опять также. удаляет все цитаты и текст между ними.
Помоему надо вставить где (.) блок исключающий значения <!--QuoteEEnd-->
вот только как
 

sanch

Новичок
дак я и просто U пробовал
PHP:
$msg = ereg_replace("/<!--quoteo(.)+<!--QuoteEEnd-->/U",'',$msg);
и так
PHP:
$msg = ereg_replace("<!--quoteo(.)+<!--QuoteEEnd-->?U",'',$msg);
вообще ничего не удаляет
 

sanch

Новичок
Mr_Max спасибо за ссылку
нашел там в примерах подобное, создал на его основе свое.

В итоге рабочий вариант такой:
PHP:
$msg = preg_replace("/(<!--quoteo)(.)+(<!--QuoteEEnd-->)/Uis","",$msg);
нужный эффект я думаю дало:
замена
ereg_replace на preg_replace и добавление модификатора U
 
Сверху