Mi ricordo di averlo fatto prima, ma non riesco a trovare il codice. Io uso str_replace per sostituire un personaggio come questo: str_replace(':', ' ', $string);
ma voglio sostituire tutti i seguenti caratteri \/:*?"<>|
, senza fare uno str_replace per ciascuno.Str_replace per più elementi
risposta
str_replace()
può prendere un array, quindi potresti fare:
$new_str = str_replace(str_split('\\/:*?"<>|'), ' ', $string);
In alternativa è possibile utilizzare preg_replace()
:
$new_str = preg_replace('~[\\\\/:*?"<>|]~', ' ', $string);
Supponendo che l'OP significasse che il backslash doveva essere sostituito, quel modello preg_replace non funzionava per me. Per far funzionare il backslash come previsto, ho dovuto usare 4 di essi (cioè "\\\\") nel pattern. – GreenMatt
@GreenMatt Hai ragione. – NullUserException
Una buona risposta, aggiungendo la risposta @dogbert, lo renderebbe completo per le persone che non leggono il manuale e non si rendono conto che str_split restituisce un array. – Bradmage
Ti piace questa:
str_replace(array(':', '\\', '/', '*'), ' ', $string);
Oppure, in PHP moderna (qualsiasi cosa, da 5.4 in poi), il leggermente meno prolisso:
str_replace([':', '\\', '/', '*'], ' ', $string);
Definitivamente la risposta più efficiente – zoltar
Si potrebbe utilizzare preg_replace(). Il seguente esempio può essere eseguito utilizzando riga di comando php:
<?php
$s1 = "the string \\/:*?\"<>|";
$s2 = preg_replace("^[\\\\/:\*\?\"<>\|]^", " ", $s1) ;
echo "\n\$s2: \"" . $s2 . "\"\n";
?>
uscita:
$ s2: "la stringa "
str_replace(
array("search","items"),
array("replace", "items"),
$string
);
Se si sta sostituendo solo singoli caratteri, si dovrebbe utilizzare strtr()
Solo caratteri singoli? Come mai? –
Per esempio, se si desidera sostituire search1 con replace1 e search2 con replace2 quindi il seguente codice funzionerà:
print str_replace(
array("search1","search2"),
array("replace1", "replace2"),
"search1 search2"
);
// Output: replace2 replace1
bello! in qualche modo logica, ma non sapevo :) –
ho avuto una situazione in cui ho dovuto sostituire i tag HTML con due diversi risultati di sostituzione.
$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;
risultato
"spruzzatore e Fire Protection Installer", "Operaio addetto alle tubazioni", "Terrazzo, Piastrelle e marmo Setter",
- 1. Regex str_replace
- 2. str_replace in SQL UPDATE?
- 3. Prestazioni di str_replace in PHP
- 4. PHP Multi Byte str_replace?
- 5. str_replace con array
- 6. str_replace() sulle stringhe multibyte pericoloso?
- 7. Quando utilizzare strtr vs str_replace?
- 8. Comportamento imprevisto con str_replace "NA"
- 9. str_replace: corrisponde solo a parola intera
- 10. ordine query mysql per più elementi
- 11. jQuery evento click per più elementi
- 12. Come sostituire "\" usando str_replace() in PHP?
- 13. Esiste un equivalente di str_replace in C++?
- 14. PHP str_replace() con un limite param?
- 15. Ricerca di più elementi
- 16. Rimuovere più elementi in jQuery
- 17. Campi incrociati con più elementi
- 18. Gradiente CSS su più elementi
- 19. SQL seleziona più elementi nell'unione
- 20. Stile dizionario sostituire più elementi
- 21. JavaFX8 TreeTableView più elementi radice
- 22. javascript setattribute a più elementi
- 23. più elementi con css simile
- 24. C'è un modo per trovare elementi comuni in più elenchi?
- 25. LINQ Single() Eccezione per 0 o più elementi
- 26. JavaScript e getElementById per più elementi con lo stesso ID
- 27. Applicare la funzione jQuery per più elementi con stessa classe
- 28. Android - ListView per caricare più elementi quando raggiunto la fine
- 29. Modo standard per rimuovere più elementi da un dataframe
- 30. MySQL e SQLAlchemy: ottenere N commenti recenti per più elementi
si desidera sostituire tutti questi caratteri con uno spazio? –
Non abbiate paura di fare riferimento all'eccellente manuale php.net e [rivedi la sezione params] (http://php.net/str_replace) per vedere se ciò che vuoi è possibile. –