代码之家  ›  专栏  ›  技术社区  ›  user1788736

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

  •  1
  • user1788736  · 技术社区  · 9 年前

    我正在尝试使用pregmatch_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];
    
    1 回复  |  直到 9 年前
        1
  •  3
  •   chris85 Ferenc Kurucz    9 年前

    你有两个空格,而不是一个,你应该把 ' src s = 所以你在表达中没有这个。

    $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==
    

    不过,您最好使用解析器来实现这一点。例如,如果其他属性在 源代码 这行不通。