我想确保链接是从选择的社会类型。救命!!
$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');
}发布于 2016-05-11 06:10:26
对于preg_match,将有两个选项作为- 1。
$subject = "https://www.youtube.co.uk/watch?v=DBK-Cy9ge4M";
$pattern = '/^youtube/';
preg_match($pattern, substr($subject,7), $matches);
print_r($matches);$socialType = 'youtube';
$link = 'https://www.youtube.co.uk/watch?v=DBK-Cy9ge4M';
if (strpos($link, $socialType) !== false) {
return Response::json('Valid');
}发布于 2016-05-11 05:56:49
您可以简单地检查一下,该链接是否包含使用strpos的子字符串
$link = 'https://www.youtube.co.uk/watch?v=DBK-Cy9ge4M';
$type = 'youtube';
if (strpos($link, $type) !== false) {
// passed
}或者使用一个简单的正则表达式,如果需要更严格的检查:
$reg_type = preg_quote($type, '/');
if (preg_match("/^https?:\/\/(www\.)?$reg_type/", $link)) {
// passed
}注意,您应该使用preg_quote转义传递给正则表达式的值。
这种模式应该就够了。别太复杂了。通常不可能编写一个完美的正则表达式。例如,很难找到HTTP(S)协议前缀+可选的"www.“+”youtube“。在一个不属于Youtube的URL中。
而且,我也不希望用一个通用的正则表达式来回答所有类型的社交网络。每个人都有自己的模式。
https://stackoverflow.com/questions/37154085
复制相似问题