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.
webboxxx
вроде все верно, но если говоришь не работает, значит чето не так, разбираться лень. сделай проще:
$text = '...';
$array1 = array(...);
$array2 = array(...);
for($i=0;$i<count($array1);$i++) $text = str_replace($array1[$i],$array2[$i],$text);
echo $text;
webboxxx
не, я понял.
не работает потому что по первому кругу `word1` меняется на `word2`, таким образом в тексте остается ни одного `word1`, и 2 `word2`. потом когда меняется `word2` на `word3` - заменяются оба слова ну и т.д.
решение - заменять в цикле на уникальные временные строки типа %placeholder1%, %placeholder2%, а потом разом менять уже на нужные строки.