首先,我对 PHP 的了解远非如此——对它只有基本的了解,但我正在寻找一种使用 php 操作嵌套 div 内容的方法。这是当地非营利食品银行的基本网站,允许他们为客户发布活动。
例如,我要解析和使用的文件具有这种结构(认为这是完整的文件,尽管在任何时间点可能有超过 2 个条目):
<div class="event">
<div class="eventTitle">title text</div>
<div class="eventContent">event content</div>
</div>
<div class="event">
<div class="eventTitle">title2</div>
<div class="eventContent">event content2</div>
</div>
我的想法是解析它(最好的方法是什么?),并构建一个包含 class="event" 的所有 div 的多维数组,以及每个 div 的嵌套内容。然而,到目前为止,我所有的尝试都以失败告终。
这样做的重点是允许用户(非技术食品银行管理员)添加、编辑和删除这些结构。我有代码可以添加结构 - 但不确定我将如何在以后重新打开文件,然后编辑和/或删除“事件”div的选择实例及其嵌套内容。看起来这应该是一件容易的事,但我就是无法围绕我在网上找到的搜索结果。
我用 preg_match()、getElementById() 和 getElementByTagName() 尝试了一些东西。我真的很想帮助这个组织,但我不得不听从我的强者的意见,以寻求如何解决手头任务的建议。
提前致谢。
澄清:这是针对他们的网站,由提供商托管在外部服务上,该提供商不允许他们托管数据库或提供对服务器的 ftp/sftp/ssh 访问以进行定期维护。该计划是让网站在那里一次,然后从那时起,通过一个不安全的(此时没有其他选项)url 对其进行维护。
谁能提供一个示例 php 语法来解析上述 html 并创建一个 div 标签的多维数组?正如我所提到的,我试图通过自己的方式来解决它,但没有成功。我知道我需要做什么,我只是迷失在语法中。
IE:这就是我想出的办法,但它似乎不起作用,而且我对 php 的理解不够深入,无法准确理解为什么它不起作用。
<?php
$doc = new DOMDocument();
$doc->load('events.php');
$events = array();
foreach ($doc->getElementsByTagName('div') as $node) {
// looks at each <div> tag and creates an array from the other named tags below // hopefully...
$edetails = array (
'title' => $node->getElementsByTagName('eventTitle')->item(0)->nodeValue,
'desc' => $node->getElementsByTagName('eventContent')->item(0)->nodeValue
);
array_push($events, $edetails);
}
foreach ($events as &$edetails) {
// walk through the $events array and write out the appropriate information.
echo $edetails['title'] . "<br>";
echo $edetails['desc'] . "<br>";
}
print_r($events); // this is currently empty and not being populated
?>
错误:PHP 警告:DOMDocument::load(): Extra content at the end in the document in /var/www/html/events.php, line: 7 in /var/www/html/test.php on line 4
现在看这个,我意识到这永远不会起作用,因为它正在寻找名为 eventTitle 和 eventContent 的标签,而不是类。:(