【问题标题】:How to update HTML code contained in variable with QueryPath如何使用 QueryPath 更新变量中包含的 HTML 代码
【发布时间】:2015-02-18 13:21:39
【问题描述】:

我正在将一些内容迁移到 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“替换”函数用新标签替换旧标签吗? (我知道有很多方法可以做到,但我想以“正确”的方式去做!)。

【问题讨论】:

    标签: php querypath


    【解决方案1】:

    我自己想通了——发布答案以防将来对其他人有帮助。问题是,通过获取 $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 代码。

    【讨论】:

      猜你喜欢
      • 2016-03-30
      • 2021-07-24
      • 1970-01-01
      • 2023-03-06
      • 2021-11-02
      • 1970-01-01
      • 2020-05-30
      • 2015-07-30
      • 2012-11-03
      相关资源
      最近更新 更多