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
);