У меня есть php-процесс, который использует simpleHTMLdom для загрузки HTML-страницы, анализа всего содержимого и чтения всех экземпляров определенного класса DIV.Можно ли изменить внутренний текст элемента с помощью simpleHTMLdom и сохранить измененный контент в локальный файл?
Затем я создаю массив PHP (многомерный) данных из этих элементов DIV и UL/LI, содержащихся в каждом из них. Все это прекрасно работает, и у меня есть данные, которые мне нужны.
Затем я вставляю новый массив/элемент массива в массив с помощью json_decode (из JSON, который отправляется на эту страницу/процесс) и выполняет «сортировку» в массиве на основе метки времени.
То, что я пытаюсь сделать сейчас, это взять HTML, который я предварительно загруженный с simpleHTMLdom и
1.) опустошить родительский элемент, который содержит все DIVs я уже построил массив из:
$html->find('.bodycontent')->innertext = '';
2.) использовать PHP цикл по каждому элементу, чтобы перебрать мой массив и заново строить все DIVs и добавить в 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.) принимают вновь измененное содержание HTML от simpleHTMLdom и сохранить его в локальный файл:
// 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 ... но контейнер, который я пытаюсь вставить в IS, опустел, так что он работает.
Что мне нужно сделать, чтобы добавить свой HTML-контент, а затем сохранить документ и уметь видеть мой новый контент на месте?
(Я также начинаю думать, что вместо уничтожения и восстановления ВСЕХ DIVs я должен просто использовать simpleHTMLdom для прохождения всех DIV и определения правильного местоположения, в котором должен был быть добавлен новый DIV, а затем вставить его в в нужном месте ... я вернуться к этому позже, поэтому сейчас вопрос будет просто сосредоточиться на устранении всех DIVs и восстановление каждого из моего массива данных)
Высокий, прекрасно работает, и я буду отметить, что различие между тем, что возвращает массив против элемента. – tamak