我正在处理代替" index.html"中的字符串的代码。文件,HTML标签内有一个重复的字符串l。 我使用PHP将字符串替换为另一个字符串
问题是 那个字符串可能会在很多标签中重复出来,所以如何让PHP代码更改带有特定id的标签内的字符串,因为这个PHP代码替换了里面的所有字符串文件
$(document).ready(function () {
$("p").click(function () {
var mid= this.id;
var yyy = document.getElementById(mid).innerHTML;
document.getElementById("oldvalue").value = yyy;
document.getElementById("iddddd").value=mid;
document.getElementById("newvalue").value ="text2"
});
});

<p id="parg1" >text1 </p>
<p id="parg2">text1 </p>
<form action="changeText.php" method="POST" >
<input type="hidden" id="oldvalue" name="oldvalue" class="inputText">
<input type="hidden" id="newvalue" name="newvalue" class="inputText" >
<input type="hidden" id="iddddd" name="id" class="inputText">
<input type="submit" id="submitbutton" value="Save" >
</form>
&#13;
// php code
$content=file_get_contents("index.html");
$content_chunks=explode($_POST['oldvalue'], $content);
$content=implode($_POST['newvalue'], $content_chunks);
file_put_contents("index.html", $content);
//result from that is
//<p id="parg1" >text2 </p>
//<p id="parg2">text2 </p>
答案 0 :(得分:1)
你需要使用DOMDocument,你可以在php文档中阅读更多相关信息。
这是一个简单的例子:
<?php
function replaceByID(String $html,String $id,String $search,String $replace) : String
{
$dom = new \DOMDocument();
$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
$element = $dom->getElementByID($id);
$element->nodeValue = str_replace($search,$replace,$element->nodeValue);
$html = $dom->saveHTML();
return $html;
}
$file = 'index.html';
$html = file_get_contents($file);
$oldText = htmlspecialchars($_POST['oldValue']);
$newText = htmlspecialchars($_POST['newValue']);
$html = replaceByID($html,'parg1',$oldText,$newText);
编辑:
我刚刚测试了这个功能,它完美运行,我想它可以为你完成工作。