[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: RegExp: все вхождения, кроме первого
Glorious
Как поправить регулярку, чтобы при замене значений игнорировалось первое вхождение?

$content = 'тест [cut name="Подробнее"] тест [cut] тест [cut name="Далее"]';
$test = preg_replace('/\[cut[\s,a-z,A_Z,а-я,А-Я,",=]*\]/u', '***', $content);
echo $test;

Т.е. скрипт сейчас выводит:
тест *** тест *** тест ***

А нужно:
тест [cut name="Подробнее"] тест *** тест ***
Placido
Начнем с того, что в символьном классе ересь. Ну а решение на первый взгляд такое:
$content = 'тест [cut name="Подробнее"] тест [cut] тест [cut name="Далее"]';
$test = preg_replace_callback('/(\[cut.*?\])(.*)/', function($match){return $match[1] . preg_replace('/\[cut.*?\]/', '***', $match[2]);}, $content);
echo $test;

Решение не претендует на оптимальность.
S.Chushkin
Вариант с модификатором e:
$test = stripslashes(preg_replace('/^(.*\[cut.*\])(.*?)/Ue', '"$1".preg_replace("/(\[cut.*\])/U","***","$2")', $content));


_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Glorious
Placido,
Спасибо, хорошее решение.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.