在php上使用子模式创建正则表达式时遇到一些问题。需要一些帮助。
我有这样的HTML代码:
<div class="result-item *sr ">
<a href="/watch?v=_CvG8Eu0nSY" class="ux-thumb-wrap result-item-thumb"><span class="video-thumb ux-thumb-128 "><span class="clip"><img onload="tn_load(1)" alt="Thumbnail" src="//i4.ytimg.com/vi/_CvG8Eu0nSY/default.jpg" ></span></a></div>
所以我想要$ matches [0] - “/ watch?v = _CvG8Eu0nSY”和$ matches [1] - “i4.ytimg.com/vi/_CvG8Eu0nSY/default.jpg".
感谢您的回答!
答案 0 :(得分:2)
使用DOMDocument。下面是一个例子:
$html = '<div class="result-item *sr ">
<a href="/watch?v=gbF_fwTfZ9U" class="ux-thumb-wrap result-item-thumb"><span class="video-thumb ux-thumb-128 "><span class="clip"><img onload="tn_load(10)" alt="Thumbnail" data-thumb="//i4.ytimg.com/vi/gbF_fwTfZ9U/default.jpg" src="//s.ytimg.com/yt/img/pixel-vfl3z5WfW.gif" ></span></a>
</div>';
$d = new DOMDocument();
$d->loadHTML($html);
$a = $d->getElementsByTagName("a");
foreach($a as $foo) {
print $foo->getAttributeNode("href")->nodeValue."\n";
$imgs = $foo->getElementsByTagName("img");
foreach($imgs as $img) {
print $img->getAttributeNode("data-thumb")->nodeValue."\n";
}
}
答案 1 :(得分:0)
以下内容应该有效:
preg_match("/a href=\"(\/watch\?v=.*)\".*data-thumb=\"\/\/(.*)\"/U", $html, $matches);
可能有更优雅的方式将其拉下来,但这是第一种想到的方式。