- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Подскажите как заменить, например 3, вхождение определенного тега (<p>)?
Спасибо
Miracle добавил 09.08.2011 в 10:52
А еще было бы идеально поиск и замена "с конца"!
$beg="fjrnhfjh<p>fcjkn</p>ffv<p>fvgbghnhjm</p>gbgb<p>dfvfbgf</p>gbgngm";
$res=preg_replace("/(<p>.*?<\/p>).*?$/Ui", "tothis", $beg);
echo $res;
Может как-то так..
Обратите внимание на синтаксис preg_replace (четвертый параметр)
Функция preg_replace()
Синтаксис:
mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])
Эта функция позволит вам произвести замену текста по регулярному выражению. Здесь производится поиск по регулярному выражению pattern в тексте subject, и каждый найденный фрагмент текста заменяется на текст, заданный в replacement. Задание необязятельного параметра limit позволит ограничить количество заменяемых фрагментов в тексте.
Вот так:
в $n какой по счёту нужно заменять.
<?php
$beg="fjrnhfjh<p>fcjkn</p>ffv<p>fvgbghnhjm</p>gbgb<p>dfvfbgf</p>gbgngm";
preg_match_all("/(<p>.*?<\/p>)/is", $beg, $regs);
$n=3;
$res = str_replace($regs[0][$n-1], "tothis", $beg);
echo $res;
?>
спасибо
ограничить количество заменяемых фрагментов в тексте
я это читал.
в $n какой по счёту нужно заменять.
я все же надеялся что есть решение проще ))
ну квантификатор кратности например? (если я правильно понял, что нужно - заменить указанное кол-во подряд идущих тэгов чем-то одним)
(<p>.*?<\/p>){3} - ровно 3
(<p>.*?<\/p>){3,} - 3 и более
(<p>.*?<\/p>){,3} - не более трёх и т.д.
(<p>.*?<\/p>){3} - ровно 3
cryptex, для приведенного Вами примера это работает (проверил)
но вот (<p>.*?<\/p>){4} уже "не прокатывает" - нет в примере четырех подряд идущих "<p>.*</p>" "не разбавленных" другим текстом (между третьим и четвертым параграфом простой текст).
А вообще здорово! не ожидал что квантизатор работает с подстрокой!