Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测PHP字符串中的希伯来语字符_Php_String_Utf 8_Hebrew - Fatal编程技术网

检测PHP字符串中的希伯来语字符

检测PHP字符串中的希伯来语字符,php,string,utf-8,hebrew,Php,String,Utf 8,Hebrew,在PHP中,是否有已知的安全/可靠的方法 一般来说,检测纯英语字符字符串中的希伯来语字符 用某物替换那个字符 我知道,对于一组特定字符,我可以使用mb\u ereg\u replace替换特定字符。然而,我感兴趣的是能够扫描可能包含任何希伯来语字符的字符串,然后用其他字符替换它 也就是说,我可能有两个这样的字符串 <?php $string1 = "Look at this hebrew character: חַ. Isn't it great?"; $string2 =

在PHP中,是否有已知的安全/可靠的方法

  • 一般来说,检测纯英语字符字符串中的希伯来语字符
  • 用某物替换那个字符
  • 我知道,对于一组特定字符,我可以使用
    mb\u ereg\u replace
    替换特定字符。然而,我感兴趣的是能够扫描可能包含任何希伯来语字符的字符串,然后用其他字符替换它

    也就是说,我可能有两个这样的字符串

    <?php
        $string1 = "Look at this hebrew character: חַ. Isn't it great?";
        $string2 = "Look at this other hebrew character: יַָ. It is also great?";
    
    理论上,我知道我可以扫描字符串中的字符并检测这些字符,但是在PHP中字符串编码的工作原理对我来说总是有点模糊,如果存在这样的问题,我宁愿使用经验证/已知的解决方案

    在您的情况下,此选项很有用。支持命名属性,特别是希伯来语属性。也就是(
    IntlChar::BLOCK\u code\u HEBREW

    您只需屏蔽希伯来语片段:

    mbregex_encoding('utf-8');
    var_dump(mb_ereg_replace_callback('\p{Hebrew}+', function($matches) {
        return vsprintf('\texthebrew{%s}', $matches);
    }, $subject));
    
    输出:

    string(65) "Look at this hebrew character: \texthebrew{חַ}. Isn't it great?"
    
    如输出所示,带有两个代码点的四个字节正确地包装在一个段中


    在PHP中,我不知道有什么其他方法可以用这些小代码做到这一点。

    确保字符串是UTF-8编码的,然后处理unicode属性。你也可以先对它进行规范化。谢谢你的时间/关注@hakre-这就是我的意思*理论上我知道我可以扫描字符串中希伯来语UTF-8范围内的字符并检测它们*。然而,由于这闻起来像是一项有许多未知因素的任务,在我开始重新发明另一个轮子之前,我更喜欢一些经过验证的科学。Unicode支持正在发挥作用,您应该提供编码为UTF-8的字符串。使用preg_match验证字符串是否正确进行UTF-8编码,mb_ereg_*是否存在无效UTF-8的问题(未将其检测为无效)。
    string(65) "Look at this hebrew character: \texthebrew{חַ}. Isn't it great?"