我正在将一些内容迁移到Drupal,并希望使用QueryPath来更改
中的图像引用<img src="example.jpg">
到
<img src="/sites/default/files/images/example.jpg">
我从整个页面HTML中提取“main”div并将其放入变量($ mainContent)。然后我可以获取图像标签并更新它们。这一切都有效,但我无法弄清楚如何将更新的图像标记恢复到我的$ mainContent变量中。
这是我的代码:
$qp = qp($htmlCode); // full HTML page
$mainContent = $qp->top()->find('#main')->innerHTML(); // div containing main content
foreach (qp($mainContent, 'img') as $img) {
$new_src = '/sites/default/files/images/' . $img->attr('src');
$img->attr('src', $new_src); // src attribute is updated
$mainContent->XXXXX // ????? What to put here ????
}
在foreach循环中的第二行之后,$ img变量包含每个图像的更新的src属性。但是,我无法弄清楚将更新的图像标记折叠回$ mainContent变量所需的QueryPath语法。我应该使用普通的PHP“替换”函数来替换旧的标签吗? (我知道有很多方法可以做到,但我想以“正确”的方式做到这一点!)。
答案 0 :(得分:2)
我自己想出来 - 发布答案以防将来可能对其他人有帮助。问题是,通过获得&#34; innerHTML&#34; $ mainContent的值,我把它设置为标量变量而不是QueryPath对象。
以下代码正确地将更改应用于变量的内容。
$qp = qp($htmlCode); // full HTML page
$mainContent = $qp->top()->find('#main'); // div containing main content
foreach ($mainContent->top()->find('img') as $img) {
$new_src = '/sites/default/files/images/' . $img->attr('src');
$img->attr('src', $new_src); // src attribute is updated
}
$output = $mainContent->top()->find('#main')->innerHTML();
现在,$ output包含&#34; #main&#39;的HTML代码。格。