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

sega

  • Давно я тут
  • 259
  • 4
Есть строка. Нужно заменить подстроку, но не во всех вхождениях, а только например при втором, как такое реализовать?
те то же самое что и str_replace только не все вхождения.
Наверное можно разбить на массив, но есть же способ проще?

*

SeBun

  • Практически профи
  • 3154
  • 193
  • @SeBun48
preg_replace
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Сопровождение | IT-аутсорсинг
*

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

  • Практически профи
  • 1816
  • 138
Что надо заменить, Оракул? И на что?
Ставь лайк, если согласен, и делай репост!

  => мои публикации
    => мои работы
      => спектр моих услуг
*

sega

  • Давно я тут
  • 259
  • 4
Что надо заменить, Оракул? И на что?
Код
<p>111</p>
<p>222</p>
<p>333</p>
<p>444</p>

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

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

*

sega

  • Давно я тут
  • 259
  • 4
preg_replace
как я понял у preg_replace параметр limit указывает не на номер вхождения а на количество вхождений же?
*

zomby6888

  • Живу я здесь
  • 1484
  • 167
Ну я бы как нибудь так сделал:
Код: 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
*

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

  • Практически профи
  • 1816
  • 138
Код: "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 от Филипп Сорокин »
Ставь лайк, если согласен, и делай репост!

  => мои публикации
    => мои работы
      => спектр моих услуг
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Замена в плагине контента

Автор aspidy

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