是否可以使用 simpleHTMLdom 修改元素的内部文本并将修改后的内容保存到本地文件?

Is it possible to modify innertext of an element with simpleHTMLdom and save the modified content to local file?

我有一个 php 进程,它使用简单的HTMLdom 加载一个 HTML 页面,解析所有内容并读取特定 class 共 DIV 秒。

然后,我根据 DIV 中的每个数据和 UL / LI 元素创建了一个 PHP 数据数组(多维)。所有这一切都很完美,我有我需要的数据。

然后我使用 json_decode 将一个新的数组对象/项目插入到数组中(来自发布到此 page/process 的 JSON),并执行 'sort'在基于时间戳的数组上。

我现在要做的是采用我之前加载的 html 简单 HTMLdom 和

1.) 清空包含所有 DIV 的父元素 我之前构建的数组来自:

$html->find('.bodycontent')->innertext = '';

2.) 使用 PHP foreach 循环遍历我的数组并重新构建所有 DIV 并添加到我之前清空的 HTML 元素:

// variable to hold the new HTML content
$newHTMLforMeetings = '';  

// loop over array and build HTML...
foreach($articles as $addMeetingItem){
    $newHTMLforMeetings .= '<div class="meetingEntry">';
    $newHTMLforMeetings .= '    <h2 class="meetingEntryTitle">'.$addMeetingItem['meetingTitle'].'</h2>';
    $newHTMLforMeetings .= '    <div class="meetingEntryDate">'.$addMeetingItem['meetingDate'].'</div>';
    $newHTMLforMeetings .= '    <div class="meetingEntryDocs">';
    $newHTMLforMeetings .= '        <ul class="meetingDocs">';
        foreach( $addMeetingItem['meetingDocs'] as $key => $aDoc ){
            $newHTMLforMeetings .= '<li class="docliItem"> <a href="'. $addMeetingItem['meetingDocLinks'][$key] .'" class="meetingLink">'. $aDoc .'</a> </li>';
        }
    $newHTMLforMeetings .= '        </ul>';
    $newHTMLforMeetings .= '    </div>';
    $newHTMLforMeetings .= '</div>';
};

// **  THIS IS NOT WORKING FOR ME FOR SOME REASON **
// now add that newly built HTML content into the HTML element that was previously emptied
$html->find('.bodycontent')->innertext = $newHTMLforMeetings;

3.) 从simpleHTMLdom中取出新修改的HTML内容,保存到本地文件:

// a new variable that has all the HTML I want to save
$docHtml = $html->save();

// save out the HTML content to the local file
file_put_contents('NewPage.html', $docHtml);

我可以回显 $newHTMLforMeetings,它看起来很完美并且包含我所有的 HTML 元素和数据。但是我保存的页面不包含新元素/HTML 内容...但是我试图将它们插入的容器已清空,因此可以正常工作。

我需要做什么才能添加我的 HTML 内容然后保存文档并能够在适当的位置看到我的新内容?

(我现在也开始认为,与其销毁和重建所有 DIV,不如使用简单的HTMLdom 来遍历所有 DIVs 并确定我新添加的 DIV 应该在的正确位置,然后将其插入正确的位置......我稍后会重新讨论这个问题,所以现在的问题将只关注删除所有DIVs 并从我的数据数组中重建每一个。)

看起来你想要:

$html->find('.bodycontent', 0)->innertext = $newHTMLforMeetings;

记得

$html->find('.bodycontent')

将return一个数组,并且

$html->find('.bodycontent', $i)

将return一个元素