まず第一に、私は PHP が得意というわけではありません。基本的な知識しかありませんが、ネストされた div の内容を PHP で操作する方法を探しています。これは、顧客向けのイベントを投稿できるようにする、地元の非営利フードバンクの基本的なサイトです。
たとえば、解析して操作したいファイルには次の構造があります (任意の時点で 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 とそのネストされたコンテンツの選択したインスタンスを編集および/または削除する方法については不明です。簡単な作業のように思えますが、オンラインで見つけた検索結果に頭を悩ませることはできません。
preg_match()、getElementById()、および getElementByTagName() でいくつか試してみました。私は本当にこの組織を助けたいと思っていますが、目の前のタスクを解決する方法については、上司にアドバイスを求めなければならないところまで来ています.
前もって感謝します。
明確にするために:これは、定期的なメンテナンスのためにDBをホストしたり、サーバーへのftp / sftp / sshアクセスを提供したりすることを許可しないプロバイダーによって外部サービスでホストされているWebサイト用です。計画では、一度サイトを立ち上げ、それ以降は安全でない (現時点では他のオプションはありません) URL を介して維持する予定です。
上記のhtmlを解析し、divタグの多次元配列を作成するためのサンプルphp構文を提供できる人はいますか? 前述したように、私はそれをうまくやり遂げようとしましたが、うまくいきませんでした。何をする必要があるかはわかっていますが、構文で迷ってしまいます。
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(): /var/www/html/events.php のドキュメントの末尾に余分なコンテンツがあります。行: 4 行目の /var/www/html/test.php の 7
これを今見てみると、クラスではなく、eventTitle と eventContent という名前のタグを探しているため、これはうまくいかないことがわかりました。:(