PHP 验证英语和波斯语(波斯语)URL 的模式

PHP Pattern to validate URL in English and persian(Farsi)

我有一个模式可以检查给定的 url 是否正确,这在英语中工作得很好,但是当我给它波斯语字符时它 returns false 因为无效 URL.

该代码适用于某些 URL 混合波斯语字符的代码,但不适用于其他代码!我可以在哪里进行更改或可以在此模式中添加什么,以便它也可以用英语验证波斯语字符?

// check if URL is valid format
$pattern = '/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w]([-\d\w]{0,253}[\d\w])?\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.,\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.,\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.,\/\d\w]|%[a-fA-f\d]{2,2})*)?$/'; 
$isLink = preg_match($pattern, $url); // Returns true if a link    

您可以对波斯语字符使用 u 修饰符,但我不确定,因为您没有提供任何 url 来使用 [=15 进行检查=]u修饰符

这样试试。

// check if URL is valid format
$pattern = '/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?
([\d\w]([-\d\w]{0,253}[\d\w])?\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.,\d\w]|%[a-fA-f\d]{2,2})*)*
(\?(&?([-+_~.,\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.,\/\d\w]|%[a-fA-f\d]{2,2})*)?$/u'; 
$isLink = preg_match($pattern, $url); // Returns true if a link                   ^see