我正在寻找通过php操纵html元素的解决方案。 我正在阅读http://www.php.net/manual/en/book.dom.php,但我没有走得太远。
我正在使用“iframe”元素(视频嵌入代码)并尝试在回显之前修改它。 我想在“src”属性中添加一些参数。
根据https://stackoverflow.com/a/2386291的答案,我能够遍历元素属性。
$doc = new DOMDocument();
// $frame_array holds <iframe> tag as a string
$doc->loadHTML($frame_array['frame-1']);
$frame= $doc->getElementsByTagName('iframe')->item(0);
if ($frame->hasAttributes()) {
foreach ($frame->attributes as $attr) {
$name = $attr->nodeName;
$value = $attr->nodeValue;
echo "Attribute '$name' :: '$value'<br />";
}
}
我的问题是:
iframe示例:
<iframe src="http://player.vimeo.com/video/68567588?color=c9ff23" width="486"
height="273" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen>
</iframe>
答案 0 :(得分:1)
// to get the 'src' attribute
$src = $frame->getAttribute('src');
// to set the 'src' attribute
$frame->setAttribute('src', 'newValue');
要更改URL,您应首先使用parse_url($src)
,然后使用新的查询参数重建它,例如:
$parts = parse_url($src);
extract($parts); // creates $host, $scheme, $path, $query...
// extract query string into an array;
// be careful if you have magic quotes enabled (this function may add slashes)
parse_str($query, $args);
$args['newArg'] = 'someValue';
// rebuild query string
$query = http_build_query($args);
$newSrc = sprintf('%s://%s%s?%s', $scheme, $host, $path, $query);
答案 1 :(得分:0)
我不明白为什么你需要遍历属性来确定这是否是你正在寻找的元素。你似乎只是抓住第一个iframe元素,所以我不清楚你第一个问题是什么。
对于第二个问题,您只需要使用setAttribute()
这样的DOMElement
方法:
$frame->setAttribute($attr_key, $attr_value);
解析您显示的HTML时不应该有问题。