如何解决如何将数据从DOMDocument传递到正则表达式?
| 使用以下代码,我从一些html中获得\“ img \”标签,并检查它们是否被\“ a \”标签覆盖。以后,如果当前的\“ img \”标签不属于\“ a \”(超链接)的一部分,我想将此img标签覆盖到\“ a \”标签中,添加超链接开始,结束标记以及对目标的设置。为此,我要使用整个\“ img \”标签html。 问题是如何将\“ img \”标签html传输到regexp中。我需要在regexp中使用一些php变量来处理带有???的地方。迹象。$doc = new DOMDocument();
$doc->loadHTML($article_header);
$imgs = $doc->getElementsByTagName(\'img\');
foreach ($imgs as $img) {
if ($img->parentNode->tagName != \"a\") {
preg_match_all(\"|<img(.*)\\/>|U\",???,$matches,PREG_PATTERN_ORDER);
}
}
解决方法
您不想为此使用正则表达式。您已经有一个DOM,因此使用它:
foreach ($imgs as $img) {
$container = $img->parentNode;
if ($container->tagName != \"a\") {
$a = $doc->createElement(\"a\");
$a->appendChild( $img->cloneNode(true) );
$container->replaceChild($a,$img);
}
}
参见文档
DOMDocument::createElement
DOMNode::appendChild
DOMNode::cloneNode
DOMNode::replaceChild
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。