在PHP字符串中检测希伯来字符

时间:2017-06-17 18:54:48

标签: php string utf-8 hebrew

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

  1. 一般来说,检测一个普通英文字符串中的希伯来字符。
  2. 用某些内容替换该字符
  3. 我知道,对于一组特定字符,我可以使用mb_ereg_replace替换特定字符。但是,我有兴趣能够扫描可能包含任何希伯来字符的字符串,然后将其替换为。

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

    <?php
        $string1 = "Look at this hebrew character: חַ. Isn't it great?";
        $string2 = "Look at this other hebrew character: יַָ. It is also great?";
    

    我想要一个能给我以下字符串的单个函数

    Look at this hebrew character: \texthebrew{ח}. Isn't it great?
    Look at this other hebrew character: \texthebrew{י}. It is also great?
    

    理论上我知道我可以在the hebrew UTF-8 range中扫描字符串中的字符并检测那些但是字符串上的字符编码在PHP中的工作方式对我来说总是有点朦胧,并且如果存在这样的事情,我宁愿使用经过验证/已知的解决方案。

1 个答案:

答案 0 :(得分:2)

mb_ereg_replace_callback function对您的情况很有用。 regular expression dialect特别支持命名属性,希伯来语属性。那是Hewbrew Unicode blockIntlChar::BLOCK_CODE_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中做任何其他方法。