Come sostituire più valori in php

$srting = "test1 test1 test2 test2 test2 test1 test1 test2"; 

Come posso modificare i valori test2 in test2 e test2 ?
Quando uso str_replace e preg_replace tutti i valori vengono modificati sull'ultimo valore dell'arrays. Esempio:

 $pat = arrays(); $pat[0] = "/test1/"; $pat[1] = "/test2/"; $rep = arrays(); $rep[0] = "test2"; $rep[1] = "test1"; $replace = preg_replace($pat,$rep,$srting) ; 

Risultato:

 test1 test1 test1 test1 test1 test1 test1 test1 

Questo dovrebbe funzionare per te:

 <?php $string = "test1 test1 test2 test2 test2 test1 test1 test2"; echo $string . "<br />"; echo $string = strtr($string, arrays("test1" => "test2", "test2" => "test1")); ?> 

Produzione:

 test1 test1 test2 test2 test2 test1 test1 test2 test2 test2 test1 test1 test1 test2 test2 test1 

Scopri questa DEMO: http://codepad.org/b0dB95X5

Il modo più semplice è usare la function str_ireplace per la sostituzione senza distinzione tra maiuscole e minuscole:

 $text = "test1 tESt1 test2 tesT2 tEst2 tesT1 test1 test2"; $from = arrays('test1', 'test2', '__TMP__'); $to = arrays('__TMP__', 'test1', 'test2'); $text = str_ireplace($from, $to, $text); 

Risultato:

 test2 test2 test1 test1 test1 test2 test2 test1 

Con preg_replace è ansible sostituire il valore di test con i valori temporanei, quindi sostituire il valore temporaneo con valori di test intercambiati

 $srting = "test1 test1 test2 test2 test2 test1 test1 test2"; $pat = arrays(); $pat[0] = '/test1/'; $pat[1] = '/test2/'; $rep = arrays(); $rep[1] = 'two'; //temporary values $rep[0] = 'one'; $pat2 = arrays(); $pat2[0] = '/two/'; $pat2[1] = '/one/'; $rep2 = arrays(); $rep2[1] = 'test2'; $rep2[0] = 'test1'; $replace = preg_replace($pat,$rep,$srting) ; $replace = preg_replace($pat2,$rep2,$replace) ; echo $srting . "<br/>"; echo $replace; 

produzione:

 test1 test1 test2 test2 test2 test1 test1 test2 test2 test2 test1 test1 test1 test2 test2 test1