【问题标题】:PHP Pattern to validate URL in English and persian(Farsi)用英语和波斯语(波斯语)验证 URL 的 PHP 模式
【发布时间】:2015-01-04 07:03:10
【问题描述】:

我有一个模式可以检查给定的 url 是否正确,这在英语中工作得很好,但是当我给它提供波斯语字符时,由于 URL 无效,它返回 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    

【问题讨论】:

  • 你能提供一个不匹配的网址吗?此模式也匹配 email 和 mailto:

标签: php regex validation url


【解决方案1】:

您可以将 u 修饰符 用于波斯语字符,但我不确定,因为您没有提供任何网址来使用 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   

【讨论】:

  • 我使用了 u 修饰符,但是 u 修饰符不起作用。有没有其他的url检查方法?
  • 你能提供一个不匹配的网址吗?
  • 例如:当用户使用小册子在网站中添加博客文章时。 (博客地址:todayslinks.blogsky.com/1393/10/12/post-1/…, )你可以在帖子中看到小册子图片(蓝色方块)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多