Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:RegEx匹配链接外部的所有URL_Php_Regex - Fatal编程技术网

PHP:RegEx匹配链接外部的所有URL

PHP:RegEx匹配链接外部的所有URL,php,regex,Php,Regex,到目前为止,我一直在使用这个正则表达式代码获取YouTube视频的ID "/https?:\/\/w*.?(?:youtube.com|youtu.be)\/watch\/\?v=([A-Za-z0-9\-_]+)/i" 我尝试扩展它,因此它会忽略HTML链接中YouTube视频的ID(href=“…”) 不幸的是,这不起作用。事实上,完整的代码会产生相反的结果 $input = array( 'http://youtube.com/watch/?v=oKay1', 'http

到目前为止,我一直在使用这个正则表达式代码获取YouTube视频的ID

"/https?:\/\/w*.?(?:youtube.com|youtu.be)\/watch\/\?v=([A-Za-z0-9\-_]+)/i"
我尝试扩展它,因此它会忽略HTML链接中YouTube视频的ID(href=“…”)

不幸的是,这不起作用。事实上,完整的代码会产生相反的结果

$input = array(
    'http://youtube.com/watch/?v=oKay1',
    'http://youtu.be/watch/?v=oKay2',
    'href="http://youtube.com/watch/?v=NICHToKay"', //this shouldn't be found
    '[url="http://youtube.com/watch/?v=oKay3]'
    );

$pattern = "/[?:(^href=\")]https?:\/\/w*.?(?:youtube.com|youtu.be)\/watch\/\?v=([A-Za-z0-9\-_]+)/i";

foreach($input as $v) {
    $match = preg_match_all($pattern, $v, $result);
    print "$v => $match\n";
    if ($match == 1)
        var_dump($result);
}
有什么帮助吗?

试试这个(根据数组中的4个给定值):


您将在第三组结果中获得您的ID

试试这个,我是从本网站的另一个链接获得的

preg_match('#<object[^>]+>.+?http://www.youtube.com/v/([A-Za-z0-9\-_]+).+?</object>#s', $markup, $matches);

var_dump($matches[1]);
preg_match('#]+>。+?http://www.youtube.com/v/([A-Za-z0-9\-#]+).+?#s',$markup,$matches);
var_dump($matches[1]);
来源:

为什么不先去掉标签(),然后再查找URL?
/^(\[url\="){0,1}http[s]{0,1}\:\/\/(www\.){0,1}(youtube\.com|youtu\.be)\/watch\/\?v\=(.+)(\]){0,1}/ims
preg_match('#<object[^>]+>.+?http://www.youtube.com/v/([A-Za-z0-9\-_]+).+?</object>#s', $markup, $matches);

var_dump($matches[1]);