[PHP-users 33142] SimpleXML 特定条件?でエラー

chaplin 777 chaplin777 @ gmail.com
2008年 1月 23日 (水) 18:14:01 JST


はじめまして、寺田と申します。

POSTでXML文字列を送信し、simplexml_load_stringで
XML文字列をオブジェクトに代入したいのですが、
特定の条件下だとエラーになる問題が発生しており
是非皆様のお力をお貸し頂ければと思い投稿しました。

テスト環境は以下の通りです。
※長文・乱文で申し訳ございません。

(テストページ)
http://kyo2.heteml.jp/input.html

(サーバー環境)
PHP 5.1.6
SimpleXML(Revision: 1.151.2.22)
phpinfo.php http://kyo2.heteml.jp/phpinfo.php5

---input.html(送信フォーム)-----

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>

<form action="test.php5" method="POST">
<textarea name="xml" rows="5" cols="80">
〜XML文字列〜
</textarea><BR>
<input type="submit">
</form>

</body>
</html>

---test.php5(PHPスクリプト)-----

<?php
$str = stripslashes($_POST['xml']);
$obj = simplexml_load_string($str);

if($obj == false){
	echo "NG...";
}else{
	echo "OK";
}
?>

以下のようなXML文字列を送信した場合は正常に動作するようです。
※「input.html」の1段目参照

<?xml version="1.0" encoding="UTF-8"?>
<Test1>
  <Child1>
    <Data1>Data1-1</Data1>
    <Data2>Data1-2</Data2>
  </Child1>
  <Child2>
    <sub1>clips</sub1>
  </Child2>
</Test1>

以下のように改行なしで送信した場合は、エラーとなります。
※「input.html」の2段目参照

また、<Test1>や</Test1>のみを改行した場合はエラーになりません。
※「input.html」の3・4段目参照

改行なし(2段目のような状態)で送信したいのですが、
simplexml_load_string に問題があるのでしょうか?
または、何か別の原因でエラーとなるのでしょうか?

対処法、改善点などございましたらご教授頂ければ幸いです。
以上、お忙しい中恐縮ですがよろしくお願い致します。


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