我一直在搜索几个小时没有回答。
你如何在阿拉伯语字符和英语字符上使用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 );
答案 0 :(得分:5)
unicode character map是一个可视化字符组的好地方,包括阿拉伯语字符串的第一部分为您[أ-يa-zA-Z]
分组
如果您仍然不确定,请在regular expressions上阅读更多内容。
答案 1 :(得分:1)
我在你的范围内看到的是,你有[أ-ي]
,我知道右边的那个是阿拉伯语A,第一个字母。我不熟悉第一个,但我想它就像最后一个角色。如果是这种情况,因为PHP语言是英语,您可能希望将范围的方向改为[ي-أ]
。
另外,对于规范化,我会使用Unicode字符范围,就像Bryan建议的那样。