[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена слов в тексте
micakult
Есть текст в котором несколько раз встречается слово PRIOR. Нужно заменить всего одно вхождение этого слова в тексте, минуя первое и последнее. Как это можно сделать?
Спасибо.



Спустя 9 часов, 54 минуты, 58 секунд (25.02.2011 - 09:32) kovaldm написал(а):
Если php > 5.0.0, то str_replace(). Или preg_replace().

Спустя 7 минут, 5 секунд (25.02.2011 - 09:40) Snus написал(а):
micakult
Возможно, это можно сделать на регулярке, но я человек колхозного воспитания, поэтому советую бить текст на слова , проходиться циклом и менять первое вхождение слова.

$exp = explode(' ', $text);
$i = 0;
$cnt = count($exp);
foreach($exp as $key => $val){
if(trim($val) == 'PRIOR'){
if($i > 0 && $i < $cnt) $exp[$key] = 'MotherFucker';
$i++;
}
}

$text = implode(' ', $exp);
echo $text;

Спустя 5 минут, 2 секунды (25.02.2011 - 09:45) kovaldm написал(а):
Snus
Зачем? Функции str_replace можно указать количество замен, которое необходимо произвести. Вот так например.
$str = str_replace('Вася', 'Пупкин', $str, 1);

Спустя 1 минута, 1 секунда (25.02.2011 - 09:46) Snus написал(а):
kovaldm
Цитата (micakult @ 24.02.2011 - 20:37)
минуя первое и последнее

Прочитай, что автор просит.


Спустя 2 минуты, 6 секунд (25.02.2011 - 09:48) kovaldm написал(а):
Snus
Точно, невнимательность.

Спустя 3 часа, 15 минут, 18 секунд (25.02.2011 - 13:03) DedMorozzz написал(а):
<?php

$a = 'asd PRIOR asda PRIOR sss PRIOR 1';
$a = preg_replace('#(PRIOR.*?)PRIOR(.*?PRIOR)#is','$1NEW WORD$2',$a);
echo $a;
Быстрый ответ:

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