我有这段代码:
$xpath = new DOMXPath($dom);
foreach ($xpath->query("//text()") as $q) {
foreach(preg_split("/(\r?\n)/", $q->nodeValue) as $line) {
$str = trim($line);
$translation = search_in_db_for_translation($str);
if (!empty($translation) {
replace string previously found by $translation
}
}
}
脚本在XML文档中搜索每个字符串,如果数据库中有可用的翻译(对{“输入语言字符串”,“输入语言字符串”}),则必须替换DOM文档中的字符串(之后)这个翻译有更多的DOM操作)。问题是我无法找到执行此操作的功能。
编辑:为了清楚起见,我需要的是修改当前行和仅当前行($ line var或$ q-> nodeValue)的方法。请参阅JWiley的回答和我的评论。
答案 0 :(得分:0)
您可以在XPath中使用translate()
函数:
translate(text(), "oldText", "replacementText")
答案 1 :(得分:0)
答案很简单:
$xpath = new DOMXPath($dom);
foreach ($xpath->query("//text()") as $q) {
foreach(preg_split("/(\r?\n)/", $q->nodeValue) as $line) {
$str = trim($line);
$translation = search_in_db_for_translation($str);
if (!empty($translation) {
$q->nodeValue = $translation;
}
}
}
它将替换文本,之后我只需要$dom->saveHTMLFile($out)
来保存HTML文件。