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) {
            replace string previously found by $translation
        }
    }
}

脚本在 XML 文档中搜索每个字符串,如果数据库中有可用的翻译(对 {"input language string", "input language string"}),它必须替换 DOM 文档中的字符串(在此翻译之后是更多的 DOM 操作)。问题是我无法找到执行此操作的功能。

编辑:为了清楚起见,我需要的是一种修改当前行且仅修改当前行的方法($line var 或 $q->nodeValue)。请参阅 JWiley 的回答和我的评论。

4

2 回答 2

0

您可以translate()在 XPath 中使用该函数:

translate(text(), "oldText", "replacementText")
于 2012-11-07T18:51:53.313 回答
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 文件。

于 2012-11-09T19:35:35.917 回答