2010-09-06 24 views
20

cómo puedo analizar una cadena para eliminar todos los caracteres no ingleses en phpeliminar los caracteres no ingleses PHP

ahora Quiero eliminar cosas como

სოფო ნი

Gracias :)

+0

supongo que te refieres caracteres alfabéticos romanos no latinos /. –

+0

Sí, lo siento, eso es lo que quise decir –

Respuesta

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

Muy bien hecho. ¡Aprendí algo nuevo! –

+1

Estoy feliz de poder ayudar y compartir el conocimiento :) – aularon

+0

Octal 0 a 255, por lo tanto, decimal de 0 a 173? – Gumbo

5

mediante el uso de preg_replace()

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

echo $string; 

Por supuesto, Tendrás que expandir el patrón preg_replace, pero esa es una forma de hacerlo. Probablemente haya una mejor manera, simplemente no lo sé.

-1

uso este código:

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

tendrías que comparar con todos los caracteres no ingleses –

+0

Tendería a utilizar un enfoque de "lista blanca" en lugar de un enfoque de "lista negra". Es decir, me gustaría hacer que la rutina identificara los personajes que deberían conservarse, esos personajes que "tienen" "caracteres ingleses" y eliminen el resto, en lugar de tratar de identificar los caracteres que deberían eliminarse. – spencer7593

6

Su mejor opción sería utilizar iconv, que convierte las cadenas a solicitado codificación de caracteres.

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

con //translit se obtiene una conversión significativa a ASCII (por ejemplo ß -> ss). El uso de // IGNORE eliminará los caracteres no ASCII por completo.

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

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

Cuestiones relacionadas