121 votes

Str_replace pour plusieurs éléments

Je me souviens l'avoir déjà fait, mais je ne trouve pas le code. J'utilise str_replace pour remplacer un caractère comme ceci : str_replace(':', ' ', $string); mais je veux remplacer tous les caractères suivants \/:*?"<>| , sans faire de str_replace pour chacun.

195voto

Dogbert Points 44003

Comme ça:

 str_replace(array(':', '\\', '/', '*'), ' ', $string);

Ou, en PHP moderne (tout à partir de la version 5.4), le moins verbeux :

 str_replace([':', '\\', '/', '*'], ' ', $string);

125voto

NullUserException Points 42268

str_replace() peut prendre un tableau, vous pouvez donc faire :

 $new_str = str_replace(str_split('\\/:*?"<>|'), ' ', $string);

Alternativement, vous pouvez utiliser preg_replace() :

 $new_str = preg_replace('~[\\\\/:*?"<>|]~', ' ', $string);

79voto

Sumoanand Points 3387

Par exemple , si vous souhaitez remplacer search1 par replace1 et search2 par replace2 alors le code suivant fonctionnera :

 print str_replace(
    array("search1","search2"),
    array("replace1", "replace2"),
    "search1 search2"
);

// Sortie : replace1 replace2

51voto

Marty Points 22040
str_replace(
    array("search","items"),
    array("replace", "items"),
    $string
);

6voto

Explosion Pills Points 89756

Si vous ne remplacez que des caractères uniques, vous devez utiliser strtr()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X