【发布时间】:2015-06-17 22:36:21
【问题描述】:
我为我的一个客户创建了一个简单的 jquery 插件,它获取他的 HTML 文件,并允许他点击一个区域,并替换其 HTML 内容。
例如,点击一个 div,会提示他在表单中输入新的文本。单击“确定”时,它将发送带有他单击的 div 的 HTML 代码的 ajax 请求。
在 PHP 中,我将检查从 Ajax 发送的所有标签,我想用不同的文本替换它们,然后保存新创建的 HTML 文件。
假设我得到了:
<h1>Welcome to my Website!</h1>
我想改成他之前指定的,
所以
<h1>Welcome to my Website!</h1>
将通过 PHP 更改为
<h2>Hello World!</h1>
在 PHP 中:
<?Php
ini_set('display_errors', 1);
error_reporting(E_ALL);
// get an edited file
$page = file_get_contents("page.html"));
$links = json_decode($_GET['links'], true);
foreach($links as $link) {
$page = str_replace($link['tag'], $link['new_tag'], $page);
}
file_put_contents("test.html", $page);
print 'DONE';
但有时 str_replace 不会替换标签,如果通过查看接受的数组,一切都与 page.html 中存储的相同。
=======================
编辑
$_GET['link'] 示例
array(2) {
[0]=>
array(3) {
["tag"]=>
string(28) "<h1>Welcome to Example!</h1>"
["tag_modified"]=>
string(146) "<h1 class="highlighted" onclick="location.href = 'http://www.example.com'">Welcome to Example!.</h1>"
}
[1]=>
array(3) {
["tag"]=>
string(179) "<p>Some Random Text.</p>"
["tag_modified"]=>
string(293) "<p class="highlighted" onclick="location.href = 'http://www.example.com/'">Some Random Text.</p>"
}
}
谢谢。
【问题讨论】:
-
你不能用
strip_tags()吗? -
这有什么关系?我从 jquery HTML 代码发送以稍后替换。我也想替换标签,而不是剥离它们。即将
hello
更改为hello
。通过单击hello
我将此标签发送到 php 以替换为预定义的不同标签。 -
您不应该使用 ajax 发送整个 html 标记。只需发送元素的 .text 或输入标签的 .val 即可。您是否也需要发送 html 标签?
-
是的,当然,因为我在替换它们时将 HTML 属性添加到这些标签中。我想用不同的代码块替换整个代码块。例如,向 标签添加 onclick 属性
标签: javascript php jquery html