2010-08-18 7 views
1

나는 다음을 수행하려고 해요로드 문제 : 문자열을로드 할 때PHP DOM - 유튜브 삽입 코드

$string = "<object width=\"425\" height=\"350\"> 
       <param name=\"movie\" value=\"http://www.youtube.com/v/1OtdDqF5rnI&autoplay=0\"></param> 
       <param name=\"wmode\" value=\"transparent\"></param> 
       <embed src=\"http://www.youtube.com/v/1OtdDqF5rnI&autoplay=0\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"425\" height=\"350\"></embed> 
      </object>"; 

$doc = new DOMDocument(); 
$doc->loadXML($string); 

나는 다음과 같은 오류를 얻을 :

[phpBB Debug] PHP Notice: in file /mnt/FS-2/Critical/Media/Private/Website/Online/blitz1up.com/application/controllers/articles.php on line 303: DOMDocument::loadXML() [domdocument.loadxml]: EntityRef: expecting ';' in Entity, line: 2 
[phpBB Debug] PHP Notice: in file /mnt/FS-2/Critical/Media/Private/Website/Online/blitz1up.com/application/controllers/articles.php on line 303: DOMDocument::loadXML() [domdocument.loadxml]: EntityRef: expecting ';' in Entity, line: 4 

나는 원인을 좁혀 YouTube URL로 연결되지만이 오류를 해결하는 가장 좋은 방법은 확실하지 않습니다. 그래서 어떤 제안이라도 가장 환영받을 것입니다.

답변

2

URL에 앰퍼샌드가 포함되어 있습니다. 앰퍼샌드는 엔터티를 선언 할 때 사용하지 않을 경우 &amp;으로 인코딩해야합니다. 파서는 &autoload이 새로운 엔티티를 시작한다고 가정하지만 세미콜론으로 끝나지는 않습니다.

HTML을 사용하는 경우 조각을 loadHTML()으로로드하는 것이 좋습니다. 해당 부분의 오류를 비활성화하십시오.

libxml_use_internal_errors(TRUE); 
$doc = new DOMDocument(); 
$doc->loadHTML($string); 
libxml_clear_errors(); 
echo $doc->saveHTML(); 

위의 내용은 loadXML에도 적용됩니다.

+0

쿨 ... 앰퍼샌드를 & amp;로 변경하면 문제가 해결되었습니다. 고맙습니다. – diggersworld