<!-- MEMCACHE empty -->
私はリモートアクセスしようとしているXMLファイルの最上部に配置されているため、上記のようになっています。 simpleXMLは、XMLファイルがもはや整形式でないという事実を好まない。私はエラーをエスケープしようとしましたが、それはトリックを行うように見えませんでした。誰かがこれを解決する方法の方向に私を指摘することはできますか?エスケープシンプルXMLエラー
<!-- MEMCACHE empty -->
私はリモートアクセスしようとしているXMLファイルの最上部に配置されているため、上記のようになっています。 simpleXMLは、XMLファイルがもはや整形式でないという事実を好まない。私はエラーをエスケープしようとしましたが、それはトリックを行うように見えませんでした。誰かがこれを解決する方法の方向に私を指摘することはできますか?エスケープシンプルXMLエラー
XMLファイルが正常に整形されていない限り、SimpleXMLはそれをロードしません。そのため、XMLファイルに文字列操作を行う必要があります。
この「MEMCACHE空」のものが常に同じ場合は、str_replaceに基づいて非常に簡単なことがあります。
simplexml_load_string
を行います
多分それは本当に "クリーン"ではない...しかし、動作する必要があります、速く、簡単です...例えば
あなたの非XMLは次のようになります場合、:
$real_xml_string = str_replace("<!-- MEMCACHE empty -->\n", '', $xml_string);
注末尾に "\n
":あなた
$xml_string = <<<XML
<!-- MEMCACHE empty -->
<?xml version="1.0" ?>
<data>
<glop>TEST</glop>
<other>GLOP</other>
</data>
XML;
あなたはこれを使用する場合がありますその改行を削除する必要があります;-)
:
<?xml version="1.0" ?>
<data>
<glop>TEST</glop>
<other>GLOP</other>
</data>
いずれも整形式のXMLです。
$xml = simplexml_load_string($real_xml_string);
var_dump($xml);
そして、あなたは、あなたが望むものを得る:あなたは今、それを読み込むことができます
object(SimpleXMLElement)[1]
public 'glop' => string 'TEST' (length=4)
public 'other' => string 'GLOP' (length=4)
「ステータスが」MEMCACHEの事は常に「空」でないで場合、あなたには、いくつかを使用する可能性があります正規表現。あなたには、
$real_xml_string = preg_replace("#<!-- MEMCACHE (\w+) -->\n#", '', $xml_string);
(あなたのニーズに応じて、ビットを適応させることが必要になる場合があります)もちろん
:このような何かが、私は推測し、代わりにstr_replace
コールで、行う可能性がありますケースでは、$xml_string
はソースコードには格納されませんが、curlやfile_get_contents
のようなものを介して取得されます。
それは
<!-- MEMCACHE empty -->
<?xml version="1.0" ?>
<root> ... </root>
のように、ファイルの最上部にならそれから私は行うための最善のことは、それが空またはヌルにpreg_replace("/^<!-- MEMCACHE empty -->$/", "", $xml_file)
になると思います。
<?xml version="1.0" ?>
は、DOM、SAX、SimpleXMLなどのいずれの場合でも有効なXMLであるためにはファイルの最初の行にする必要があるからです。
すぐに対応すること。ありがとう!私が変更を加えた後、彼らはmemcacheを無効にしました。 Go figure。 – Eric
あなたは大歓迎です:-) ;;問題が解決した後のmemcachedの無効化についての不運:-D –