Qual è il modo migliore per rimuovere i segni di punteggiatura, simboli, segni diacritici, caratteri speciali?
-
16-10-2019 - |
Domanda
Io uso queste righe di codice per rimuovere tutti i segni di punteggiatura, simboli, ecc, come si può vedere nella matrice,
$pattern_page = array("+",",",".","-","'","\"","&","!","?",":",";","#","~","=","/","$","£","^","(",")","_","<",">");
$pg_url = str_replace($pattern_page, ' ', strtolower($pg_url));
, ma voglio rendere più semplice come sembra stupido alla lista tutte le cose che voglio rimuovere nella matrice come ci potrebbero essere alcuni altri caratteri speciali che voglio rimuovere.
ho pensato di usare l'espressione regolare di sotto,
$pg_url = preg_replace("/\W+/", " ", $pg_url);
, ma non rimuove sotto-punteggio - _
Qual è il modo migliore per rimuovere tutte queste cose? Può espressione regolare farlo?
Soluzione
A seconda di come avidi si desidera essere, si potrebbe fare qualcosa di simile:
$pg_url = preg_replace("/[^a-zA-Z 0-9]+/", " ", $pg_url);
Questo sostituirà tutto ciò che non è una lettera, numero o spazio.
Altri suggerimenti
Utilizzare le classi:
preg_replace('/[^[:alpha:]]/', '', $input);
eliminerebbe tutto ciò che non è considerato un "personaggio" di impostazioni internazionali attualmente impostato. Se si tratta di segni di punteggiatura, si cercano di eliminare, la classe sarebbe [:punct:]
.
mezzi \W
"qualsiasi non-word carattere" ed è l'opposto del \w
cui include sottolineatura (_
).