可能重复:
如何将阿拉伯字母添加到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建议的那样。