PHP-从HTML中提取文本,翻译并放回原处
我正在使用一个API来翻译我的博客,但它有时会弄乱我的html,这给了我更多的工作来修复一切 我现在要做的是从html中提取内容,翻译并放回原处 我首先尝试用preg#u replace来做这件事,在这里我会用像###a#####这样的东西来替换每个标记,然后在翻译文本后返回到原始标记。不幸的是,这很难管理,因为我需要用唯一的值替换每个标记 然后,我尝试了“简单html dom”,可以在这里找到: 通过这种方式,我获得了所有文本,但值(div中的div)中仍然有一些html,我不知道如何将翻译后的文本放回原始对象。此对象的结构非常复杂,显示它时会使我的浏览器崩溃 我已经没有选择了,可能有更直接的方法。我想找到一种方法来获取一个对象或数组,其中一边包含所有html,另一边包含所有文本。我会在文本中循环以使其翻译,并将所有内容合并回去,以避免破坏html 你认为实现这一目标有更好的选择吗 谢谢 洛朗 然后拆分“>”上的每个数组项。此数组中的第一项是标记。其他每一项(如果有)都将是翻译的内容PHP-从HTML中提取文本,翻译并放回原处,php,html-parsing,text-parsing,Php,Html Parsing,Text Parsing,我正在使用一个API来翻译我的博客,但它有时会弄乱我的html,这给了我更多的工作来修复一切 我现在要做的是从html中提取内容,翻译并放回原处 我首先尝试用preg#u replace来做这件事,在这里我会用像###a#####这样的东西来替换每个标记,然后在翻译文本后返回到原始标记。不幸的是,这很难管理,因为我需要用唯一的值替换每个标记 然后,我尝试了“简单html dom”,可以在这里找到: 通过这种方式,我获得了所有文本,但值(div中的div)中仍然有一些html,我不知道如何将翻译
转换完成后,您可以通过再次将数组项粘回来反转它。例如,我有以下HTML,其中所有单词都是小写的:
<div>
<h2>page not found!</h2>
<p>go to <a href="/">home page</a> or use the <a href="/search">search</a>.</p>
</div>
上述结果如下:
<div>
<h2>Page Not Found!</h2>
<p>Go To <a href="/">Home Page</a> Or Use The <a href="/search">Search</a>.</p>
</div>
找不到页面!
转到或使用
谢谢,这是一个好主意,但有时标签在翻译过程中会被翻译,然后用胶水粘回去会破坏最初的代码。如果在未编码的文本部分使用Array
(
[0] =>
[1] => div>
[2] => p>
This text is for translating
[3] => br>
Next line of text
[4] => /p>
[5] => /div>
)
<div>
<h2>page not found!</h2>
<p>go to <a href="/">home page</a> or use the <a href="/search">search</a>.</p>
</div>
libxml_use_internal_errors(true);
$dom = new DomDocument();
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//text()') as $text) {
if (trim($text->nodeValue)) {
$text->nodeValue = ucwords($text->nodeValue);
}
}
echo $dom->saveHTML();
<div>
<h2>Page Not Found!</h2>
<p>Go To <a href="/">Home Page</a> Or Use The <a href="/search">Search</a>.</p>
</div>