Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Однократная замена слов
цитата
22/06/07 в 09:09
 Alexandur
подскажите, как сделать замену однократной

строка: ugffg word2 jsdifsdvs word1 insdfgsfg word3

массив1: Array ( [0] => word1 [1] => word2 [2] => word3 )

массив2: Array ( [0] => word2 [1] => word3 [2] => word1 )

str_replace($arr1,$arr2,$stroka)

результат str_replace получается не такой, как хотелось.
word1 так и остается, word2 меняется на word1, и только word3, т.к. задумано на word1

спрашивал на phpclub.ru упорно тыкают в ман, а я также упорно не вижу решения...
подсказали strtr но к ней нужна функция array_combine которая толшько в пхп5.
цитата
22/06/07 в 17:43
 webboxxx
вроде все верно, но если говоришь не работает, значит чето не так, разбираться лень. сделай проще:

$text = '...';
$array1 = array(...);
$array2 = array(...);

for($i=0;$i<count($array1);$i++) $text = str_replace($array1[$i],$array2[$i],$text);

echo $text;
цитата
22/06/07 в 17:54
 webboxxx
не, я понял.
не работает потому что по первому кругу `word1` меняется на `word2`, таким образом в тексте остается ни одного `word1`, и 2 `word2`. потом когда меняется `word2` на `word3` - заменяются оба слова ну и т.д.

решение - заменять в цикле на уникальные временные строки типа %placeholder1%, %placeholder2%, а потом разом менять уже на нужные строки.
цитата
23/06/07 в 07:50
 Alexandur
с циклами есть решение и проще.
я хотел встроенными функциями


Эта страница в полной версии