PEAK XOOPS - libxml2 Ver.2.7.0 -2.7.2 への対応 in englishin japanese

libxml2 Ver.2.7.0 -2.7.2 への対応

  • You cannot open a new topic into this forum
  • Guests cannot post into this forum
Previous post - Next post | Parent - Children.1 | Posted on 2009/7/31 16:31 | Last modified
toychee  二等兵   Posts: 4
いつもお世話になります。

libxml2 Ver.2.7.0 -2.7.2 のbug?で'<'とか'>'が取り除かれる現象が発生しているようです。
D3pipeにもこちらのリンクにあるような症状の発生が報告されているようです。

そこで、この問題に対応するためのコード(あちこちで見かけますが)をD3pipeにも導入されてはいかがでしょうか?

あまり詳しいことは判っていないので、はずしていたら、すみません。

class/xml.php Line 79 あたりのfunction & parse()に赤字部分を追加
	function & parse(&$data){
		$this->document = array();
		$this->stack    = array();
		$this->parent   = &$this->document;
		
		//libxml2 2.7.0 -2.7.2 stripping leading angle brackets bug patch
		if ( 
			LIBXML_DOTTED_VERSION == '2.7.0' 
			|| LIBXML_DOTTED_VERSION == '2.7.1' 
			|| LIBXML_DOTTED_VERSION == '2.7.2' 
			|| (
				LIBXML_DOTTED_VERSION == '2.7.3'
				&& version_compare( PHP_VERSION, '5.2.9', '<' )
			)
		) {
			$data =str_replace('&lt;','&#60',$data );
			$data =str_replace('&gt;','&#62',$data );
			$data =str_replace('&amp;','&#38',$data );
		}
		//end Fix

		// return xml_parse(&$this->parser, &$data, true) ? $this->document : NULL; // GIJ
		$ret = @xml_parse($this->parser, $data, true) ? $this->document : NULL;
		return $ret ;
	}

XUGJのフォーラムにも、それと思われる報告がありました。 (追記)
Votes:12 Average:7.50
Previous post - Next post | Parent - No child | Posted on 2009/8/8 4:55
GIJOE  先任軍曹   Posts: 4110
toycheeさん、こんにちは。

詳しいレポートありがとうございます。

この件そのものは、XUGJでのやりとりで知っていたのですが、結構多くの環境で問題になっているんですね。

最初は、バグ対応ジョイントを一つ作って、「バグ付きlibxmlを使っている人は、パーサの前にこれを挟んでね」、というつもりだったのですが、多くの環境で問題になっているのだと、さすがに面倒なので、class/xml.php に手を入れました。

サンプルコードもありがとうございます。

libxml-2.7.3 だとどうなのか、という判断が微妙なのですが、この変換をかけて酷いことになることは考えづらいので、2.7.0-2.7.3 であれば、PHP_VERSIONを見ずに、この変換をかけるコードにしています。
(php-5.1 系列などで、libxmlバグ対策されない、という保証がないため)

d3pipes-0.68としてリリースしています。

あらためて、レポートありがとうございました。
Votes:14 Average:5.71

  Advanced search


Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!