【问题标题】:How to tell if a string contains characters in Hebrew using PHP?如何使用 PHP 判断字符串是否包含希伯来语字符?
【发布时间】:2011-12-18 00:35:03
【问题描述】:

试图弄清楚如何判断一个字符串是否包含希伯来语中的任何个字符,但没有运气。

如何做到这一点?

【问题讨论】:

标签: php regex hebrew


【解决方案1】:

如果源字符串是 UTF-8 编码的,那么更简单的方法是在正则表达式中使用 \p{Hebrew}

调用也应该有/u修饰符。

 = preg_match("/\p{Hebrew}/u", $string)

【讨论】:

  • 这不是错过了` in \\p`吗?
  • @fge: 如果你想超级正确 :) 但是"\p" 不是 C 字符串转义,所以会以\p 正确到达 PCRE 库
  • 嗯,所以您不需要在 PHP 的字符串文字中转义反斜杠?我不知道。
  • @fge:只有少数人需要逃跑。例如"\r\n\t"。或者以其他方式使用单引号,所有这些都失去了特殊含义。
  • 嗯,是的,但在这里您使用双引号将/\p{Hebrew}/u 括起来。我没有说正则表达式不正确,我只是猜测缺少一个 ``,不是吗?
【解决方案2】:

map of the iso8859-8 character set。范围 E0 - FA 似乎是为希伯来语保留的。

[\xE0-\xFA]

对于 UTF-8,range reserved for Hebrew 似乎是 0590 到 05FF。

[\u0590-\u05FF]

以下是 PHP 中正则表达式匹配的示例:

echo preg_match("/[\u0590-\u05FF]/", $string);

【讨论】:

    【解决方案3】:

    最简单的方法是:

    preg_match('/[א-ת]/',$string)
    

    例如,

    $strings = array( "abbb","1234","aabbאאבב","אבבבב");
    
    foreach($strings as $string)
    {
        echo "'$string'  ";
    
        echo (preg_match('/[א-ת]/',$string))? "has Hebrew characters in it." : "is not Hebrew";
    
        echo "<br />";
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-26
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      • 2012-11-11
      • 2014-07-28
      • 1970-01-01
      • 2017-11-12
      相关资源
      最近更新 更多