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 に答える