我为我的客户创建了一个简单的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>"
}
}
感谢。
答案 0 :(得分:0)
请尝试使用str_replace
函数,而不是使用preg_replace
函数。 http://php.net/manual/en/function.preg-replace.php此链接可能有所帮助。
答案 1 :(得分:0)
如果您只想更改表单中的文本并假设您正在使用jQuery,但不允许在文本字段中使用任何HTML,那么您可以在通过ajax提交之前在页面中执行类似的操作:
function stripHtml(str) {
return $('<div></div>').html(str).text();
}