Recuerdo haberlo hecho antes, pero no puedo encontrar el código. Yo 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.Str_replace para varios elementos
Respuesta
str_replace()
puede tomar una matriz, por lo que podría hacer:
$new_str = str_replace(str_split('\\/:*?"<>|'), ' ', $string);
Como alternativa puede usar preg_replace()
:
$new_str = preg_replace('~[\\\\/:*?"<>|]~', ' ', $string);
Asumiendo que OP significaba que la barra invertida debería ser reemplazada, ese patrón de preg_replace no funcionó para mí. Para que la barra invertida funcione como se esperaba, tuve que usar 4 de ellos (es decir, "\\\\") en el patrón. – GreenMatt
@GreenMatt Tienes razón. – NullUserException
Una buena respuesta, agregar @dogbert answer in lo haría completo para las personas que no leen el manual y no se dan cuenta de que str_split devuelve una matriz. – Bradmage
De esta manera:
str_replace(array(':', '\\', '/', '*'), ' ', $string);
O, en PHP moderna (nada de 5.4 en adelante), el levemente menos palabras:
str_replace([':', '\\', '/', '*'], ' ', $string);
Definitivamente la respuesta más eficiente – zoltar
Usted podría utilizar preg_replace(). En el siguiente ejemplo se puede ejecutar mediante php línea de comandos:
<?php
$s1 = "the string \\/:*?\"<>|";
$s2 = preg_replace("^[\\\\/:\*\?\"<>\|]^", " ", $s1) ;
echo "\n\$s2: \"" . $s2 . "\"\n";
?>
Salida:
$ s2: "la cadena "
str_replace(
array("search","items"),
array("replace", "items"),
$string
);
Si sólo está reemplazando caracteres individuales, debe utilizar strtr()
¿Caracteres individuales solamente? ¿Cómo? –
Por ejemplo, si desea reemplazar search1 con replace1 y search2 con replace2 luego el siguiente código funcionará:
print str_replace(
array("search1","search2"),
array("replace1", "replace2"),
"search1 search2"
);
// Salida: replace2 replace1
¡agradable! de alguna manera lógica, pero yo no sabía :) –
tuve una situación en la que he tenido que cambiar las etiquetas HTML con dos resultados diferentes de reemplazo.
$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
"de riego e Instalador de Protección contra Incendios", "Steamfitter", "terrazo, baldosas y mármol Setter",
- 1. str_replace en SQL ACTUALIZAR?
- 2. jQuery - use wrap() para envolver varios elementos?
- 3. CSS para seleccionar varios elementos = yes
- 4. str_replace en Twig
- 5. str_replace no trabajar
- 6. str_replace() con arreglo asociativo
- 7. PHP Multi Byte str_replace?
- 8. str_replace en Lisp?
- 9. jQuery .delegate() en varios elementos
- 10. str_replace() en cadenas multibyte peligroso?
- 11. Cuándo usar strtr vs str_replace?
- 12. CSS: desplaza un elemento, ¿efecto para varios elementos?
- 13. Cómo seleccionar varios elementos con jQuery
- 14. Zabbix - Función elemento calculado sobre varios elementos
- 15. ¿Cómo eliminar varios elementos de una lista?
- 16. Colas de animación jQuery en varios elementos
- 17. Rendimiento jQuery al seleccionar varios elementos
- 18. mongodb buscar por varios elementos de matriz
- 19. Al añadir varios elementos HTML con jQuery
- 20. Cómo agrupar varios elementos usando GroupBy()?
- 21. ¿Cómo actualizo varios elementos en ElasticSearch?
- 22. ListViews con varios diseños de elementos
- 23. ¿Cómo encontrar elementos comunes de varios vectores?
- 24. wpf lista vista arrastrar seleccionar varios elementos
- 25. Error XML: hay varios elementos raíz
- 26. Estilo de diccionario reemplazar varios elementos
- 27. Portapapeles de varios elementos en VS2008
- 28. Encontrar elementos poco comunes en varios vectores
- 29. En LINQ, ¿puedo seleccionar varios elementos?
- 30. str_replace: coincide con palabra completa solamente
desea reemplazar todos estos caracteres con un espacio? –
No tenga miedo de consultar el excelente manual de php.net y [revise la sección de parámetros] (http://php.net/str_replace) para ver si lo que desea es posible. –