preg_replace和preg_match阿拉伯字符


preg_replace and preg_match arabic characters

可能重复:
如何将阿拉伯字母添加到url正则表达式

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

你如何在阿拉伯语和英语中使用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 );

unicode字符映射是一个很好的地方,可以可视化字符串第一部分使用[أ-يa-zA-Z] 分组的字符组,包括阿拉伯语

如果你仍然不确定,多读一点正则表达式。

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

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