2010-09-06 8 views
20

come posso analizzare una stringa per rimuovere tutti i caratteri non inglesi in phprimuovere i caratteri non inglesi PHP

In questo momento voglio per rimuovere le cose come

სოფო ნი

Grazie :)

+0

Presumo si intende non latini/caratteri alfabetici romani. –

+0

sì, mi dispiace, è quello che intendevo –

risposta

45
$str = preg_replace('/[^\00-\255]+/u', '', $str); 
+1

Molto ben fatto. Ho imparato qualcosa di nuovo! –

+1

Sono felice di poterti aiutare e condividere la conoscenza :) – aularon

+0

Ottale da 0 a 255, quindi decimale da 0 a 173? – Gumbo

5

utilizzando preg_replace()

$string = "some სოფო text"; 
$string = preg_replace('/[^a-z0-9_ ]/i', '', $string); 

echo $string; 

Certo, sarà necessario espandere il modello preg_replace, ma questo è un modo per farlo. Probabilmente c'è un modo migliore, semplicemente non lo so.

-1

uso di questo codice:

$illegalChars = array("",); 
$string = str_replace($illegalChars,"",$string); 
echo $string; 
+0

dovresti confrontarti con ogni personaggio non inglese –

+0

Preferirei usare un approccio "lista bianca" piuttosto che un approccio "lista nera". Cioè, vorrei che la routine identificasse i caratteri che dovrebbero essere mantenuti, quei caratteri che _ARE_ "caratteri inglesi" ed eliminano il resto, piuttosto che cercare di identificare i caratteri che dovrebbero essere rimossi. – spencer7593

6

La soluzione migliore sarebbe utilizzando iconv, che converte le stringhe per la codifica dei caratteri richiesto.

iconv('UTF-8', 'ASCII//TRANSLIT', $yourtext); 

con //translit si ottiene una conversione significativo per ASCII (ad esempio ß -> ss). L'uso di // IGNORE eliminerà del tutto i caratteri non ascii.

iconv('UTF-8', 'ASCII//IGNORE', $yourtext); 

Vedi http://php.net/manual/en/function.iconv.php