次のような PHP スニペットがあります ( snippet.php
):
<?php
$some_param = some_function();
?>
<p>
Text, bla bla bla... <?php echo $some_param ?> other text
more text
</p>
これらのスニペットを次のようにロードします。
$html = file_get_contets('snippet.php');
$dom = new DOMDocument('1.0');
$dom->loadHTML($html);
xpath を使用して変更します。
$xpath = new DOMXPath($dom);
foreach ($xpath->query("//text()") as $q) {
$str = trim($q->nodeValue);
if (isset($strings[$str])) {
$q->nodeValue = translate($str);
}
}
このファイルを保存しようとすると問題が発生します。
$dom->save($out);
スニペット構造を完全に破壊します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><?php
$some_param = some_function();
??></head><body><p>
Translated text, bla bla bla... <?php echo $some_param ?> other text
more text
</p></body></html>
保存時に元のスニペット構造を復元するにはどうすればよいですか?