1

次のように、XML の xml タグの外側にテキストを受け取ることがあります。

Bad command error. XYZ. Some more text<?xml version="1.0" encoding="utf-8"?><xml></xml>

これはphpでエラーを返します。この関数を使用してxmlを読み取っているため:

simplexml_load_string($xml);

xml でエラーが発生しないように、xml タグの外側のテキストを削除する方法はありますか?

前もって感謝します!

4

3 に答える 3

0
if (preg_match("/<\\?xml.*\\?>.*/", $xml, $matches)) {
    $xml = $matches[0];
}
于 2012-05-20T08:22:59.970 に答える
0

xml のみを抽出するこのコードを試してください。

$lpos = strpos('<?xml', $xml);
$xml = substr($xml, $lpos, strrpos('>', $xml) - $lpos +  1);

ただし、いくつかの制限があります。たとえば、xml の後に「>」文字を含めることができます。また、試してみることをお勧めしますtidy_repair_string()

于 2012-05-20T08:31:12.170 に答える
0

クイックワンライナー。

$xml = preg_replace("/^.+<\\?xml/", "<?xml", $xml, 1);

<?xmlマーカーの前の文字列で見つかったすべての文字を取り除きます。

ただし、このように不適切な形式の XML を取得している場合は、単に回避しようとするのではなく、不適切な形式の理由を突き止めようとする必要があります。

そもそも XML を生成するコードに厄介なバグがあるようです。それがあなたのコードである場合は、問題を回避するのではなく、そこで問題を修正する必要があります。サードパーティのシステムからのものである場合は、バグを通知する必要があります。

于 2012-05-20T18:13:08.107 に答える