[PHP-users 33143] Re: SimpleXML 特定条件?でエラー

Kazuhiro Kotsutsumi kotsutsumi @ xenophy.com
2008年 1月 23日 (水) 18:43:28 JST


TO:寺田様
FM:小堤

いつもお世話になっております。
Xenophy 小堤です。


var_dump( (string)$obj->Child1->Data1 );


とNG/OK判定前に入れてみてください。
NGのはずなのにとれてます。

NGになってしまっている理由はifの評価方法です。

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

と==を===とすることで正しく判定できます。

一応URLがヘテムルサーバだったので、ヘテムルとローカルでも試してみたとこ
ろ問題なく動作しました。

お役に立てば。



_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Company      : 株式会社ゼノフィ - Xenophy CO., LTD.
Name         : 代表取締役社長
               小堤 一弘
Address      : 東京都新宿区百人町1-17-6 成田ビル 305
Tel/Fax      : 03-6805-2904/03-6805-2914
Mail Address : kotsutsumi @ xenophy.com
H.P  Address : http://www.xenophy.com/
BLOG Address : http://blog.xenophy.com/
             : http://code.xenophy.com/
xFramework   : http://px.xFramework.net/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

>はじめまして、寺田と申します。
>
>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 mailing list  PHP-users @ php.gr.jp
>http://ml.php.gr.jp/mailman/listinfo/php-users
>PHP初心者のためのページ - 質問する前にはこちらをお読みください
>http://oldwww.php.gr.jp/php/novice.php3







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