simpleXML を使用して xml ファイルを処理します。キリル文字があります。dom_import_simplexml
また、importNode
とを使用して、appendChild
ファイルからファイルへ、および場所から場所へとツリーをコピーします。処理の最後にprint_r
、結果の処理を行いsimpleXmlElement
、すべて問題ありません。しかし、私もそうしていますがasXml('outputfile.xml')
、何か奇妙なことが起こっています: ラップされていないすべてのキリル文字CDATA
(一部のタグ本体とすべての属性) は、Unicode コードに変更されます。
たとえば、print_r
(ほんの一部) の出力:
SimpleXMLElement Object ( [@attributes] => Array
( [NAME] => Государственный аппарат и механизм
[COSTYES] => 3.89983579639 [COSTNO] => 0
[ID] => 9 )
[COMMENTYES] => Вы совершенно правы.
[COMMENTNO] => Нет, Вы ошиблись. ) ) )
しかし、asXml
生成されるファイルでは、次のようなものが得られます。
<QUEST NAME="Теория#x434;вухмечей"
style="educ" ID="1">
<DESC><![CDATA[Теория происхождения государства, известная как теория "двух мечей" [2, с.40],
представляет из себя...
]]></DESC>`
可能な限りどこでもutf-8ロケールを設定し、「simplexml、unicode、cyrillic、asXmlなど」という単語のすべての組み合わせをグーグル検索しましたが、何も機能しませんでした。
UPD使用されている関数のようhtmlentities()
です。したがって、 voitcusのおかげで、解決策はherehtml_entity_decode()
のアドバイスに従って使用することです。