我不知道是否最好使用DOM解析器或正则表达式,但我想用缩略图替换我的博客中的所有YouTube iframe。我找到了确实返回所有拇指的方法,但是仍然在字符串中。我希望保持字符串不变,但用缩略图替换Iframe。
此代码会返回所有YouTube视频:
$data = get_the_content();
// Find all unique YouTube videos
$re_youtube = '%youtube\.com/(?:v/|watch\?v=|embed/)(\w{10,12})\b%';
$count = preg_match_all($re_youtube, $data, $matches);
for ($i = 0; $i < $count; ++$i) {
$videos[$matches[1][$i]] = 'yt';
}
foreach ( $videos as $video => $v) {
if ( $v == 'yt' ) {
echo '<div id="yt_'.$video.'" class="viddid viddid_thumb" onclick="myFunction(\''.$video.'\')"><img src="http://img.youtube.com/vi/'.$video.'/0.jpg"></div>';
}
}
我确定我可以使用preg_replace来实现我正在寻找的东西吗?我很高兴能得到任何帮助!
我一直在做一些圆顶解析来清理HTML中的段落。它看起来像这样:
// Set the right encoding of string
$content = mb_convert_encoding($content, 'html-entities', 'utf-8');
$DOM = new DOMDocument('1.0', 'UTF-8');
$DOM->substituteEntities = TRUE;
$DOM->loadHTML($content);
foreach($DOM->getElementsByTagName("iframe") as $iframe)
{
foreach($p->attributes as $attr)
$p->parentNode->removeChild($p);
}
$content = $DOM->saveHTML();
所以现在我需要一些帮助来结合他们两个 - 是。
(以下是此操作的页面示例: http://2famous.tv/2013/11/17/middle-eastern-artists-donate-more-than-1-1-million-of-art-to-help-syrian-refugee-children/)
答案 0 :(得分:2)
我会使用DOM
和XPath
:
$doc = new DOMDocument();
$doc->loadHTML($your_html_string);
$selector = new DOMXPath($doc);
// use the starts-with function to select iframes of interest
foreach($selector->query('//iframe[starts-with(@src, "//www.youtube.com")]')
as $iframe
) {
$iframe->parentNode->removeChild($iframe);
}
echo $doc->saveHTML();