Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 纯文本上的简单HTML DOM str_替换_Php_Mysql_Dom_Str Replace_Simple Html Dom - Fatal编程技术网

Php 纯文本上的简单HTML DOM str_替换

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

我试图创建一些东西,它将改变网页上的所有文本,并重新输出给用户。它将更改数据库中预定义的单词

我用它作为我的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它与页面相呼应,但与更改无关。