gpt4 book ai didi

php - preg_replace_callback 错误中的正则表达式。 PHP

转载 作者:行者123 更新时间:2023-11-29 13:25:38 25 4
gpt4 key购买 nike

我正在尝试创建一个网络应用程序,它将任何选定的网页转换为简单的英语形式。我有一个逐字翻译存储在 MySQL 数据库中。到目前为止我有这个代码。它有效,但似乎只能在几个标签中完成我想要的操作,而不是整个页面。我认为这可能是由于正则表达式错误造成的?

<?
$English = array();
$Simple = array();
$con = mysqli_connect("localhost","root","root","Words");
$getmodels = mysqli_query($con, "SELECT * FROM Wordsweb");
while($res = mysqli_fetch_assoc($getmodels)) {
$English[] = $res['English'];
$Simple[] = $res['Simple'];
}
$url = $_GET['url'];
$string = file_get_contents($url);
$text_to_echo = preg_replace_callback(
"/(<([^.]+)>)([^<]+)(<\\/\\2>)/s",
function($matches) use ($English, $Simple) {
/*
* Indexes of array:
* 0 - full tag
* 1 - open tag, for example <h1>
* 2 - tag name h1
* 3 - content
* 4 - closing tag
*/
$matches[3] = strtolower($matches[3]);
$text = str_replace($English, $Simple, $matches[3]);
return $matches[1].$text.$matches[4];
},
$string
);
echo "<base href=\"" . $url . "/\" />";
echo $text_to_echo;
?>

最佳答案

您可以使用 DOM+Xpath 来获取和更改 HTML 文档内的文本节点:

$html = <<<'HTML'
<html>
<body>
<h1>Hello World!</h1>
<div>
<p>Lorem Ipsum...</p>
</div>
</body>
</html>
HTML;

$dom = new DOMDocument();
$dom->loadHtml($html);
$xpath = new DOMXPath($dom);

$nodes = $xpath->evaluate("//text()");
foreach ($nodes as $node) {
$node->nodeValue = strToUpper($node->nodeValue);
}

echo $dom->saveHtml();

关于php - preg_replace_callback 错误中的正则表达式。 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20179806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com