0

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="&#x422;&#x435;&#x43E;&#x440;&#x438;&#x44F;#x434;&#x432;&#x443;&#x445;&#x43C;&#x435;&#x447;&#x435;&#x439;"     
    style="educ" ID="1">
  <DESC><![CDATA[Теория происхождения государства, известная как теория "двух мечей" [2, с.40], 
    представляет из себя...
  ]]></DESC>`

可能な限りどこでもutf-8ロケールを設定し、「simplexml、unicode、cyrillic、asXmlなど」という単語のすべての組み合わせをグーグル検索しましたが、何も機能しませんでした。

UPD使用されている関数のようhtmlentities()です。したがって、 voitcusのおかげで、解決策はherehtml_entity_decode()のアドバイスに従って使用することです。

4

1 に答える 1