2009-11-23 5 views
2
<?php 
$xml = <<< AAA 
<test>c đưa lên 1 -&gt; 10 k</test> 
AAA; 
$p = xml_parser_create(); 
xml_parse_into_struct($p, $xml, $vals, $index); 
xml_parser_free($p); 
print_r($vals); 

나는 왜 다른 결과를 얻을 수 있습니까? PC 내에서 그 결과가 resut다른 환경에서 XML 구문 분석기의 결과가 다른 이유는 무엇입니까?

Array 
(
    [0] => Array 
     (
      [tag] => TEST 
      [type] => complete 
      [level] => 1 
      [value] => c đưa lên 1 - 10 k 
     ) 

) 

> 사라질이다의 procuction 환경에서

Array 
(
    [0] => Array 
     (
      [tag] => TEST 
      [type] => complete 
      [level] => 1 
      [value] => c đưa lên 1 -> 10 k 
     ) 

) 

이다. 왜?

+0

libxml2> = 2.6.32 인 PHP <= 5.2.6을 사용하는 경우 libxml2의 버그. PHP 5.2.7 이상은 libxml2의 새 동작과 함께 작동합니다 (http://bugs.php.net/bug.php?id=45996 참조). 간단히 PHP를 업그레이드하면 문제가 해결됩니다. –

답변

3

때때로 환경을 전환하면 텍스트 인코딩 및 기타 국제화 관련 문제와 관련된 몇 가지 차이점이 표시됩니다. 따라서 명시 적으로 인코딩을 xml_parser_create 함수에서 설정할 수 있습니다.

또 다른 것은 PHP 버전입니다. 두 환경에서 phpinfo()을 실행하고 거기에서 버전을 확인하십시오. PHP 버전 프로덕션이 HTML 엔터티 (& gt;)를 무시하도록 코딩 된 것일 수 있습니다. 단지 추측입니다.

편집 :
bug report에 따르면, 무시 HTML 엔티티의이 동작은 libxml2를하여 원인이 될 수 있습니다. 프로덕션 서버에서 libxml2를 최신 버전으로 업데이트하십시오.

+0

phpinfo의 차이점을 볼 수 없습니다. 둘 다의 인코딩은 utf8입니다. –

+0

그리고 <사라지지 않습니다. –

+0

내 편집에서 버그 보고서를 확인하십시오. PHP 버전이 동일하다면 libxml2의 차이점이 맞을 것입니다. – Matt

0

인코딩 문제가있는 것으로 보입니다.

+0

귀하의 결과는 무엇입니까? –

관련 문제