如何使用 preg_match all 获取 <source src='...' 的值?

How to get value of <source src='...' using preg_match all?

我正在尝试使用 preg_match_all 方法获取 src= 的值,但一直收到此错误,我的回声是空的!谁能帮我解决这个问题?提前致谢。

错误:

array(1) { [0]=> string(0) "" }

指向行:

echo "url:".$match[1][0];

php代码:

$str="........<source  src='http://somewebsite.com/hls/playlist.m3u8?token=23452345463456243dsfasdasdfasdfdsfsdfa=='  type='video/mp4'  ></source>.......";
if(preg_match_all('/\<source  src=(.*?)\'/',$str,$match)) {     
        var_dump($match[1]);            
}
echo "url:".$match[1][0];

你有两个空格,不是一个,你也应该把 ' 放在 src 之后 = 这样你就不会在表达式中有那个。

$str="........<source  src='http://somewebsite.com/hls/playlist.m3u8?token=23452345463456243dsfasdasdfasdfdsfsdfa=='  type='video/mp4'  ></source>.......";
if(preg_match_all('/\<source\h+src=\'(.*?)\'/',$str,$match)) {      
        var_dump($match[1]);   
}
echo "url:".$match[1][0];;

输出:

array(1) {
  [0]=>
  string(87) "http://somewebsite.com/hls/playlist.m3u8?token=23452345463456243dsfasdasdfasdfdsfsdfa=="
}
url:http://somewebsite.com/hls/playlist.m3u8?token=23452345463456243dsfasdasdfasdfdsfsdfa==

尽管如此,您最好还是使用解析器。例如,如果其他属性在 src 之前,这将不起作用。