0 Пользователей и 1 Гость просматривают эту тему.
  • 6 Ответов
  • 1074 Просмотров
*

sega

  • Захожу иногда
  • 272
  • 5 / 0
Есть строка. Нужно заменить подстроку, но не во всех вхождениях, а только например при втором, как такое реализовать?
те то же самое что и str_replace только не все вхождения.
Наверное можно разбить на массив, но есть же способ проще?

*

SeBun

  • BanMaster
  • 4015
  • 259 / 5
  • @SeBun48
preg_replace
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Что надо заменить, Оракул? И на что?
*

sega

  • Захожу иногда
  • 272
  • 5 / 0
Что надо заменить, Оракул? И на что?
Код
<p>111</p>
<p>222</p>
<p>333</p>
<p>444</p>

нужно, например, заменить
Код
<p>222</p>
на
Код
<p>222яяя</p>

но тест может быть любой. Поиск нужно вести именно по второму вхождению тега <p>

*

sega

  • Захожу иногда
  • 272
  • 5 / 0
preg_replace
как я понял у preg_replace параметр limit указывает не на номер вхождения а на количество вхождений же?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Ну я бы как нибудь так сделал:
Код: php
$str = preg_replace_callback(
        '|<p>(.*?)<\/p>|i',
        function ($matches) {
   static $count = 0;
   if($count == 1) {
      $matches[1] .= 'aaa';
   }
           $count++;
   return '<p>' . $matches[1]  .'</p>';
        },
        $str
    );
echo $str;

Но это если там простой и валидный HTML. В противном случае XML парсер + xpath
интернет-блог: http://websiteprog.ru
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Код: "php"
function replacer($m)
{
    static $cnt = 0;
    return !$cnt++ ? $m[0] : $m[1] . 'замена' .  $m[3];
}

$replaced = preg_replace_callback('#(<p>)(.*?)(</p>)#is', 'replacer', $string, 2);
« Последнее редактирование: 24.02.2016, 16:47:56 от Филипп Сорокин »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

PHP вывод и замена значения из БД

Автор CityCat

Ответов: 11
Просмотров: 491
Последний ответ 29.07.2021, 15:53:58
от CityCat
Замена в плагине контента

Автор aspidy

Ответов: 7
Просмотров: 1040
Последний ответ 30.01.2015, 16:54:00
от aspidy