gpt4 book ai didi

php - 使用 PHP 在文档中查找和替换具有给定类名的 html 元素内容

转载 作者:可可西里 更新时间:2023-11-01 01:07:25 25 4
gpt4 key购买 nike

我正在为我的网站开发一个轻量级的内联内容编辑器。类似于 CushyCMSSurrealCMS ,我页面的“可编辑”元素是用 class="editable" 定义的。

我想通过 AJAX 将 2 个变量传递给 php:

$page 要写入的文档(例如 '/path/index.html')

$json 一个 json 字符串:{"0":"First Content","1":"Second Content","2":"Third Content"} 其中键是所有具有 class="editable" 的元素的索引,值是每个元素的 innerHTML。

在 PHP 5.3 中,如何打开 $page 并查找/替换 class="editable" 元素?

$page = $_POST['page'];
$json = $_POST['json'];

$doc = new DOMDocument();
$doc = DOMDocument::loadHTMLFile($page);

// Detect DOM elements with class="editable" & replace content with JSON data

// Save changes to designated file
$doc->saveHTMLFile($page); // Write to file eg, 'index.html'

echo ('Success');

最佳答案

您可以使用 XPath 追踪 DOM 中的所有可编辑元素。

$xpath = new DOMXPath($doc);
$entries = $xpath->query('//*[@class="editable"]');
$edits = json_decode($json, true);
$num_edits = count($edits);

for($i=0; $i<$num_edits; $i++)
{
$f = new DOMDocument();
$edit = mb_convert_encoding($edits[$i], 'HTML-ENTITIES', "UTF-8");
$f->loadHTML($edit);
$node = $f->documentElement->firstChild;
$entries->item($i)->nodeValue = "";
foreach($node->childNodes as $child) {
$entries->item($i)->appendChild($doc->importNode($child, true));
}
}

这又是在您的原始代码的上下文中:

$page = $_POST['page'];
$json = $_POST['json'];

$doc = new DOMDocument();
$doc = DOMDocument::loadHTMLFile($page);

// Detect DOM elements with class="editable" & replace content with JSON data
$xpath = new DOMXPath($doc);
$entries = $xpath->query('//*[@class="editable"]');
$edits = json_decode($json, true);
$num_edits = count($edits);

for($i=0; $i<$num_edits; $i++)
{
$f = new DOMDocument();
$edit = mb_convert_encoding($edits[$i], 'HTML-ENTITIES', "UTF-8");
$f->loadHTML($edit);
$node = $f->documentElement->firstChild;
$entries->item($i)->nodeValue = "";
foreach($node->childNodes as $child) {
$entries->item($i)->appendChild($doc->importNode($child, true));
}
}

// Save changes to designated file
$doc->saveHTMLFile($page); // Write to file eg, 'index.html'

echo ('Success');

关于php - 使用 PHP 在文档中查找和替换具有给定类名的 html 元素内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7698556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com