php - que - ¿Cómo detecto caracteres no ASCII en una cadena?
codigo ascii pdf (9)
Si tengo una cadena PHP, ¿cómo puedo determinar si contiene al menos un carácter no ASCII o no, de una manera eficiente? Y por carácter no ASCII, me refiero a cualquier carácter que no sea parte de esta tabla, http://www.asciitable.com/ , posiciones 32 a 126 inclusive.
Así que no solo tiene que ser parte de la tabla ASCII, sino que también tiene que ser imprimible. Quiero detectar una cadena que contiene al menos un carácter que no cumple con estas especificaciones (ya sea un ASCII no imprimible o un carácter completamente diferente, como un carácter Unicode que no forma parte de esa tabla).
Entonces el método más rápido es en realidad: mb_check_encoding
, uso de muestra:
return mb_check_encoding($str, ''ASCII'');
La función ctype_print devuelve verdadero si todos los caracteres caen en el rango ASCII 32-126 ( prueba de unidad de PHP ).
Le sugiero que busque en utf8_encode o utf8_decode en el manual de PHP:
http://www.php.net/manual/en/function.utf8-encode.php
Mire los ejemplos a continuación, ya que puede tener algo allí que lo lleve a la dirección correcta si no encuentra lo que está buscando.
Me pareció más útil detectar si algún personaje cae fuera de la lista
if(preg_match(''/[^/x20-/x7f]/'', $string))
Probar ( mb_detect_encoding )
Puede usar mb_detect_encoding
y verificar ASCII:
mb_detect_encoding($str, ''ASCII'', true)
Esto devolverá false si $str
contiene al menos un carácter no ASCI (valor de byte> 0x7F).
Si no desea tratar con Regex
en javascript puede hacerlo
detectUf8 : function(s) {
var utf8=s.split('''').filter(function(C) {
return C.charCodeAt(0)>127;
})
return (utf8.join('''').length>0);
},