[PHP-users 31194] Re: DomDocument->dump_file について

Mitsuru Araki gunny517 @ gmail.com
2007年 1月 3日 (水) 22:39:29 JST


みなさんご指導ありがとうございます。

僕の説明が足りなくてすみません。
正にみなさんがおっしゃるとおりで、
要するに、dump_memを使うと文字コード指定ができて、かつ書き出すと
実態参照ではなくて実文字で書き込まれるが、dump_fileを使うと
文字コード指定もできなく、自力でコード変換してからdump_fileしても
その中身は文字実態参照になるということで、実際ブラウザなどで表示させれば
文字として表示されるのですが、ファイルを直接開いた場合の中身は当然
文字実態参照になっている、という事でした。
さらに、スクリプトそのものとしてはUTF-8で動かさないとエラーになるようでした。
(ご指摘のとおり)
なので、dump_fileではなく
fwrite($fp, $dom->dump_mem(true, "SJIS"));
などとするのが一番簡単かな、と思っています。

ちなみにこのクラスは5.0では実装されていないのでしょうか?
XML出力というのは今までしていなかったのですが、
みなさんはどのようになさっていますでしょうか?
他にもXML関連の関数などがあるようですが
使い勝手など情報おありでしたらお教えいただけるとありがたいです。





07/01/03 に ucb. rcdtokyo<ucb.rcdtokyo @ gmail.com> さんは書きました:
> DomDocument->dump_fileでは文字エンコーディングの指定ができないんですよねえ。一方、DomDocument->dump_memでは(iconvが利用可能なら)これができます。
> なので、(入力が文字列/ファイルからでなければ)いったんdump_memで、文字エンコ指定で出力したものを、あらためてファイルに書き出すのが最も簡単な方法。
>
> ◎domxml(libxml2)の内部文字エンコはUTF-8で、日本語文字は原則UTF以外はNG。ただし、iconvが利用可能なら、文字エンコが特定されている場合、iconvを利用してその変換が試みられます。
>
> ◎domxml_open_mem/domxml_open_fileで、文字列/ファイルからDOMオブジェクトを作成する場合、文字列/ファイルにXML宣言部があり、そこにencodingが指定されていれば、その値が文字エンコとなります。
>
> ◎事前に文字エンコが特定されていない場合、dump_fileや、文字エンコ指定のないdump_memでは、非ASCII文字は数値文字参照に置換されて出力されます。
>
> ※確かにマニュアルには、このヘンのことはちゃんと書かれてない罠。
>
> --
> (It's always) Under Construction, Baby
> http://www.rcdtokyo.com/ucb/
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>


-- 
===========================
Mitsuru Araki
araki @ waku-2.com

===========================


PHP-users メーリングリストの案内