with str_replace regular reemplazar expresion examples ejemplo php string str-replace

regular - str_replace position php



Str_replace para varios elementos (7)

Recuerdo haber hecho esto antes, pero no puedo encontrar el código. Uso str_replace para reemplazar un carácter como este: str_replace('':'', '' '', $string); pero quiero reemplazar todos los siguientes caracteres //:*?"<>| , sin hacer un str_replace para cada uno.


Me gusta esto:

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

O, en PHP moderno (cualquier cosa desde 5.4 en adelante), el poco menos prolijo:

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


Puede usar preg_replace() . El siguiente ejemplo se puede ejecutar usando la línea de comando php:

<?php $s1 = "the string ///:*?/"<>|"; $s2 = preg_replace("^[/////:/*/?/"<>/|]^", " ", $s1) ; echo "/n/$s2: /"" . $s2 . "/"/n"; ?>

Salida:

$ s2: "la cadena"


Si solo está reemplazando caracteres individuales, debe usar strtr()


Tuve una situación en la que tuve que reemplazar las etiquetas HTML con dos resultados de reemplazo diferentes.

$trades = "<li>Sprinkler and Fire Protection Installer</li> <li>Steamfitter </li> <li>Terrazzo, Tile and Marble Setter</li>"; $s1 = str_replace(''<li>'', ''"'', $trades); $s2 = str_replace(''</li>'', ''",'', $s1); echo $s2;

resultado

"Instalador de protección contra incendios y rociadores", "Steamfitter", "Terrazzo, azulejos y marmoleado",


str_replace() puede tomar una matriz, por lo que podría hacer:

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

Alternativamente, puede usar preg_replace() :

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


Por ejemplo , si desea reemplazar search1 con replace1 y search2 con replace2, el siguiente código funcionará:

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

// Salida: replace1 replace2


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