Quiero ser capaz de detectar (usando expresiones regulares) si una cadena contiene caracteres hebreos tanto utf8 como iso8859-8 en el lenguaje de programación php. ¡Gracias!cómo puedo detectar caracteres hebreo tanto iso8859-8 como utf8 en una cadena usando php
Respuesta
Aquí está map of the iso8859-8 character set. El rango E0 - FA parece estar reservado para el hebreo. Usted puede comprobar para los personajes de una clase de caracteres:
[\xE0-\xFA]
Para UTF-8, el range reserved for Hebrew parece ser 0591 a 05F4. Por lo que podría detectar que con:
[\u0591-\u05F4]
He aquí un ejemplo de un partido de expresiones regulares en PHP:
echo preg_match("/[\u0591-\u05F4]/", $string);
En primer lugar, una cadena de este tipo sería completamente inútil: ¿una combinación de dos juegos de caracteres diferentes?
Ambos caracteres hebreos en iso8859-8, y cada byte de secuencias multibyte en UTF-8, tienen un valor ord($char) > 127
. Entonces, lo que haría es buscar todos los bytes con un valor mayor que 127, y luego verificar si tienen sentido como is8859-8, o si crees que tendrían más sentido como secuencia UTF8 ...
¿Cómo puede tener un carácter ord ($ char)> 255 en ISO-8859-8? ¡Es un byte único! –
Bien, bien. No sé por qué, pero me burlé por completo de que no-ascii están entre 128 y 255, corregidos ahora. – gnud
Supuse que eso era lo que querías decir mientras tanto. Tienes suerte esperé antes de devolverte ;-) –
He aquí una pequeña función para comprobar si el primer carácter de una cadena está en hebreo:
function IsStringStartsWithHebrew($string)
{
return (strlen($string) > 1 && //minimum of chars for hebrew encoding
ord($string[0]) == 215 && //first byte is 110-10111
ord($string[1]) >= 144 && ord($string[1]) <= 170 //hebrew range in the second byte.
);
}
buena suerte :)
bien si su archivo PHP está codificado con UTF-8 como debe ser en casos th en hebreo que tiene en ella, se debe utilizar la siguiente RegX:
$string="אבהג";
echo preg_match("/\p{Hebrew}/u", $string);
// output: 1
function is_hebrew($string)
{
return preg_match("/\p{Hebrew}/u", $string);
}
- 1. Cómo truncar una cadena UTF8 en PHP?
- 2. ¿Cómo saber si una cadena contiene caracteres en hebreo usando PHP?
- 3. ¿Cómo puedo detectar caracteres Unicode en una cadena de Java?
- 4. Almacenar una cadena como UTF8 en C#
- 5. Python: Cadena de formato de una serie de expresiones regulares que utiliza tanto '%' como '{' como caracteres
- 6. Convierte caracteres utf8 a iso-88591 y vuelve a PHP
- 7. Necesidad de una expresión regular para una cadena que debe tener tanto caracteres numéricos como carta
- 8. usando preg_match para detectar caracteres persas (farsi) en la cadena
- 9. ¿Cómo detectar una cadena UFF-8 mal formada en PHP?
- 10. ¿Cómo puedo detectar caracteres no occidentales?
- 11. MySQL - Convertir caracteres latin1 en una mesa de UTF8 en UTF8
- 12. ¿Cómo puedo soportar tanto HTML4 como HTML5?
- 13. Cómo convertir caracteres UTF8 a entidades de caracteres numéricos en PHP
- 14. Detectar caracteres chinos (multibyte) en la cadena
- 15. ¿Cómo puedo detectar los caracteres definidos en una fuente?
- 16. ¿Cómo detectar si una cadena contiene caracteres especiales?
- 17. ¿Convertir cadena latin1 a utf8?
- 18. ¿Cómo puedo detectar ciertos caracteres Unicode en una cadena en Ruby?
- 19. Recortar múltiples caracteres usando php
- 20. ¿Cómo detectar si tiene que aplicar decodificación u codificación de utf8 en una cadena?
- 21. Apache POI, usando tanto XSSF como HSSF
- 22. Cómo convertir una cadena a UTF8?
- 23. de caracteres UTF8 decodificación en C Objetivo
- 24. ¿Cómo puedo eliminar caracteres repetidos en una cadena con R?
- 25. PHP: explotar usando caracteres especiales
- 26. cómo detectar y corregir la codificación de caracteres en una base de datos mysql a través de php?
- 27. ¿Cómo puedo convertir caracteres no ASCII codificados en UTF8 en equivalentes ASCII en Perl?
- 28. ¿Cómo puedo dividir una cadena con caracteres en blanco como delimitadores?
- 29. (鉑) funciones de cadena y UTF8 en php
- 30. ¿Cómo eliminar caracteres particulares de una cadena usando XSLT?
El problema es que E0-FA también son valores que ocurrirán en UTF-8, pero no exactamente como caracteres hebreos ... – gnud
@gnud: Es por eso que no deberías usar la regex iso8859-8 en cadenas UTF-8 – Andomar