6

可能重复:
如何将阿拉伯字母添加到 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 );
4

2 回答 2

9

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

如果您仍然不确定,请阅读更多关于正则表达式的内容。

于 2012-08-20T23:25:42.713 回答
1

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

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

于 2012-08-20T23:36:02.487 回答