如何使用xpath翻译字符串?

时间:2012-11-07 18:07:04

标签: php xpath

我有这段代码:

$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的回答和我的评论。

2 个答案:

答案 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文件。