1

我正在将一些内容迁移到 Drupal 并希望使用 QueryPath 来更改图像引用

<img src="example.jpg">

<img src="/sites/default/files/images/example.jpg">

我从整个页面 HTML 中提取“主”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“替换”函数用新标签替换旧标签吗?(我知道有很多方法可以做到,但我想以“正确”的方式去做!)。

4

1 回答 1

2

我自己想出来了-发布答案以防将来对其他人有帮助。问题是,通过获取 $mainContent 的“innerHTML”值,我将其设置为标量变量而不是 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 包含“#main” div 的 HTML 代码。

于 2015-02-19T00:22:04.893 回答