如何将阿拉伯字母添加到url正则表达式

时间:2011-01-30 10:30:11

标签: php regex url arabic

如何在正则表达式中向url添加阿拉伯字母

if (!preg_match("^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$^",$_POST['url'])) {}

3 个答案:

答案 0 :(得分:4)

最好的选择是使用Unicode chracter class。对于你的案子,它将是\p{Arabic}。但是不要忘记你还应该在最后添加Unicode PCRE修饰符/u

答案 1 :(得分:1)

[a-zA-Z0-9]替换为[\pL0-9],并且不要忘记正则表达式末尾的Unicode PCRE修饰符/u

答案 2 :(得分:0)

使用其UTF-8代码:\x123应该有帮助。

UPD:完整的正则表达式似乎是这样的(对于规则any URL part could contain arabic chars):

^(http|https|ftp)\://[a-zA-Z0-9\-\.\x0600-\x06FF\x0750-\x077F\xFB50-\xFDFF\xFE70-\xFEFF]+\.[a-zA-Z\x0600-\x06FF\x0750-\x077F\xFB50-\xFDFF\xFE70-\xFEFF]{2,3}(:[a-zA-Z0-9\x0600-\x06FF\x0750-\x077F\xFB50-\xFDFF\xFE70-\xFEFF]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~\x0600-\x06FF\x0750-\x077F\xFB50-\xFDFF\xFE70-\xFEFF])*$