Php 纯文本上的简单HTML DOM str_替换
我试图创建一些东西,它将改变网页上的所有文本,并重新输出给用户。它将更改数据库中预定义的单词 我用它作为我的HTML解析器。我要做的是只更改标记内部的测试,而不更改标记。我原以为这会管用,如果我回显Php 纯文本上的简单HTML DOM str_替换,php,mysql,dom,str-replace,simple-html-dom,Php,Mysql,Dom,Str Replace,Simple Html Dom,我试图创建一些东西,它将改变网页上的所有文本,并重新输出给用户。它将更改数据库中预定义的单词 我用它作为我的HTML解析器。我要做的是只更改标记内部的测试,而不更改标记。我原以为这会管用,如果我回显$e->plaintext,它会管用,但随后它就没有样式了 <?php // example of how to modify HTML contents include('../simple_html_dom.php'); // get DOM from URL or file $html
$e->plaintext
,它会管用,但随后它就没有样式了
<?php
// example of how to modify HTML contents
include('../simple_html_dom.php');
// get DOM from URL or file
$html = file_get_html('http://example.com/');
$e = $html->find("html", 0);
$text = $e->plaintext;
$con = mysqli_connect("localhost","root","root","Words");
$result = mysqli_query($con,"SELECT * FROM Wordsweb");
//replace all words
$English = array();
$Simple = array();
while ($row = mysqli_fetch_array($result)){
$English[] = $row['English'];
$Simple[] = $row['Simple'];
}
$e->plaintext = str_replace($English, $Simple,$e->plaintext);
echo $e;
?>
提前谢谢
p、 美国:以前我使用的是
preg\u replace\u callback
,但有人建议我使用它。单独替换每个文本节点的内容,而不是一次更改整个文件的文本:
<?php
// load the HTML document
$doc = new DOMDocument;
@$doc->loadHTMLFile('https://en.wikipedia.org/wiki/Banana');
// select all the text nodes
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//text()');
// replace text in each text node
$english = array('banana', 'bananas');
$simple = array('yello', 'yellos');
foreach ($nodes as $node) {
$node->nodeValue = str_replace($english, $simple, $node->nodeValue);
}
print $doc->saveHTML();
如果不检查您要替换的实际代码,就很难找到问题所在。。。要开始,请尝试$e->innertext
。。。如果仍然不起作用,请至少发布您正在处理的html代码的一部分……看一看。@Enissay我已经尝试过$e->innertext,但仍然没有希望。如果我回显$e->纯文本,它会显示我的更新,但如果我想用标签显示它们,它不会显示!您是否尝试过$e->outertext
。。。它显示节点内容,包括周围的内容tags@Enissay它与页面相呼应,但与更改无关。