как добавить арабские буквы в url в regex
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'])) {}
Лучшим вариантом является использование для этого класса Chracter Unicode . Для вашего дела это будет \p{Arabic} . Но не забывайте, что вы также должны добавить модификатор Unicode PCRE /u в конце.
Замените [a-zA-Z0-9] на [\pL0-9] и не забудьте модификатор Unicode PCRE /u в конце вашего регулярного выражения.
Использование кода UTF-8: \x123 должно помочь.
UPD: полное regexp похоже на это (для правила 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])*$