我希望能够检测(使用正则表达式)字符串是否包含php编程语言中的utf8和iso8859-8的希伯来字符。谢谢!
答案 0 :(得分:14)
这是map of the iso8859-8 character set。范围E0-FA似乎是为希伯来语保留的。您可以检查字符类中的那些字符:
[\xE0-\xFA]
对于UTF-8,range reserved for Hebrew似乎是0591到05F4。所以你可以通过以下方式检测到:
[\u0591-\u05F4]
以下是PHP中正则表达式匹配的示例:
echo preg_match("/[\u0591-\u05F4]/", $string);
答案 1 :(得分:4)
如果你的PHP文件是用UTF-8编码的,那么你应该使用以下的RegX:
$string="אבהג";
echo preg_match("/\p{Hebrew}/u", $string);
// output: 1
答案 2 :(得分:1)
这是一个小函数,用于检查字符串中的第一个字符是否为希伯来语:
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.
);
}
祝你好运:)
答案 3 :(得分:0)
首先,这样的字符串是完全无用的 - 两个不同字符集的混合?
iso8859-8中的希伯来字符和UTF-8中的多字节序列的每个字节都具有值ord($char) > 127
。所以我要做的就是找到值大于127的所有字节,然后检查它们是否有意义,如is8859-8,或者你认为它们作为UTF8序列更有意义......
答案 4 :(得分:0)
function is_hebrew($string)
{
return preg_match("/\p{Hebrew}/u", $string);
}