首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用preg_match进行Url验证

用preg_match进行Url验证
EN

Stack Overflow用户
提问于 2016-05-11 05:53:17
回答 2查看 2.1K关注 0票数 0

我想确保链接是从选择的社会类型。救命!!

代码语言:javascript
复制
    $socialType = 'youtube';
    $link = 'https://www.youtube.co.uk/watch?v=DBK-Cy9ge4M';

    if (!preg_match("/^(http|https):\\/\\/[a-z0-9_]+$socialType*\\.[_a-z]{2,5}"."((:[0-9]{1,5})?\\/.*)?$/i",$link)) 
    {
         return Response::json('inValid'); 
    }
    {
         return Response::json('Valid');
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-11 06:10:26

对于preg_match,将有两个选项作为- 1。

代码语言:javascript
复制
$subject = "https://www.youtube.co.uk/watch?v=DBK-Cy9ge4M";
$pattern = '/^youtube/';
preg_match($pattern, substr($subject,7), $matches);
print_r($matches);
  1. 带有闪光灯(Ruslan Osmanov)-
代码语言:javascript
复制
$socialType = 'youtube';
$link = 'https://www.youtube.co.uk/watch?v=DBK-Cy9ge4M';
if (strpos($link, $socialType) !== false) {
    return Response::json('Valid');
}
票数 1
EN

Stack Overflow用户

发布于 2016-05-11 05:56:49

您可以简单地检查一下,该链接是否包含使用strpos的子字符串

代码语言:javascript
复制
$link = 'https://www.youtube.co.uk/watch?v=DBK-Cy9ge4M';
$type = 'youtube';

if (strpos($link, $type) !== false) {
  // passed
}

或者使用一个简单的正则表达式,如果需要更严格的检查:

代码语言:javascript
复制
$reg_type = preg_quote($type, '/');

if (preg_match("/^https?:\/\/(www\.)?$reg_type/", $link)) {
  // passed
}

注意,您应该使用preg_quote转义传递给正则表达式的值。

这种模式应该就够了。别太复杂了。通常不可能编写一个完美的正则表达式。例如,很难找到HTTP(S)协议前缀+可选的"www.“+”youtube“。在一个不属于Youtube的URL中。

而且,我也不希望用一个通用的正则表达式来回答所有类型的社交网络。每个人都有自己的模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37154085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档