Qual è il modo migliore per rimuovere i segni di punteggiatura, simboli, segni diacritici, caratteri speciali?

StackOverflow https://stackoverflow.com/questions/4762546

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?

È stato utile?

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 (_).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top