代码之家  ›  专栏  ›  技术社区  ›  Xees

preg_replace和preg_match阿拉伯字符[重复]

  •  6
  • Xees  · 技术社区  · 12 年前

    可能重复:
    how to add Arabic letters to url regex

    我找了好几个小时都没有找到答案。

    你如何在阿拉伯语和英语中使用preg_replace?

    这是我的代码是英语

    $string = preg_replace ( "/&([a-zA-Z])(uml|acute|grave|circ|tilde|ring),/", "", $string );
    $string = preg_replace ( "/[^a-zA-Z0-9_.-]/", "", $string );
    

    一些答案建议我使用这个代码:

    $string = preg_replace ( "/&([أ-يa-zA-Z])(uml|acute|grave|circ|tilde|ring),/u", "", $string );
    $string = preg_replace ( "/[^أ-يa-zA-Z0-9_.-]/u", "", $string );
    

    我已经测试过了,它有效。但这对php来说真的有用吗?它包括所有的阿拉伯字符吗?有没有更好的方法来包含所有阿拉伯字符?

    我要对代码做的是:

    将字符串中的所有字符替换为有效的SEO友好字符。

    我使用以下代码解决了问题 http://www.unicodemap.org 。谢谢你,布莱恩。

    $string = preg_replace ( "/&([\x{0600}-\x{06FF}a-zA-Z])(uml|acute|grave|circ|tilde|ring),/u", "", $string );
        $string = preg_replace ( "/[^\x{0600}-\x{06FF}a-zA-Z0-9_.-]/u", "", $string );
    
    2 回复  |  直到 7 年前
        1
  •  9
  •   Bryan Wolfford    12 年前

    这个 unicode character map 是一个很好的地方,可以可视化字符串的第一部分为您分组的字符组,包括阿拉伯语 [Ø£-يa-zA-Z]

    如果你仍然不确定,请在 regular expressions

        2
  •  1
  •   inhan    12 年前

    我在你的范围内看到的是,你 [Ø£-ي] 我知道右边的是阿拉伯字母A,第一个字母。我不熟悉第一个,但我想它有点像最后一个角色。如果是这样的话,因为PHP语言是英语,您可能需要将范围的方向更改为 [ي-Ø£] 相反

    此外,为了规范化,我会使用Unicode字符范围,就像Bryan建议的那样。