2011-09-29 96 views
1

Simplexml_load_string正在刪除大量傳入它的內容。Simplexml_load_string()刪除大量內容

var_dump($cleaned); 
<item> 
    <title><![CDATA[Honda Motor Company: Motorcycles to the Civic and Accord]]></title> 
    <link>http://www.link.com/index.php?id=9987</link> 
    <description><![CDATA[Though this company is famous for its cars, it actually started as a motorcycle manufacturer. http://www.link.com takes a look at the history of the Honda Motor Company, from its popular motorcycles to the Civic and the Accord.]]> </description> 
    <pubDate>Fri, 23 Sep 2011 10:55:50 -0400</pubDate> 
    <guid>https://link.cloudfront.net/581575d3053ac1a578065c10f2bac1be.mp4</guid> 
    <media:title><![CDATA[Honda Motor Company: Motorcycles to the Civic and Accord]]> </media:title> 
<media:description><![CDATA[Though this company is famous for its cars, it actually started as a motorcycle manufacturer. http://www.link.com takes a look at the history of the Honda Motor Company, from its popular motorcycles to the Civic and the Accord.]]></media:description> 

<media:keywords><![CDATA[Honda Motor Company, Honda, motorcycles, Japan, Civic, Accord, Formula 1, F1, Acura, fuel efficiency, hybrid, ASIMO, robot, aviation, Dream D, Isle of Man races, Super Cub, auto, automotive, automobile, automaker, cars, driving, history, Soichiro Honda]]></media:keywords> 
<media:tags><![CDATA[Asian History, Automakers, Company Profiles, Honda Motor Company, Honda, motorcycles, Japan, Civic, Accord, Formula 1, F1, Acura, fuel efficiency, hybrid, robot, aviation, auto, automotive, automobile, automaker, cars, driving, history, Soichiro Honda]]></media:tags> 
<media:category><![CDATA[/Video/Auto/Reviews and Profiles]]></media:category> 
<media:thumbnail url="http://link.cloudfront.net/images/linkthumbs/A-RP-Honda-480i60_100x57.jpg"/> 
<media:content url="https://link.cloudfront.net/581575d3053ac1a578065c10f2bac1be.mp4" type="video/mp4" > 
    <media:thumbnail url="http://link.cloudfront.net/images/linkthumbs/A-RP-Honda-480i60_100x57.jpg"/> 
    <media:player url="http://www.link.com/index.php?id=9987"><![CDATA[<embed src="https://link.cloudfront.net/581575d3053ac1a578065c10f2bac1be.mp4" type="application/x-shockwave-flash" wmode="transparent" width="480" height="270"></embed>]]></media:player> 
    <media:text_content><![CDATA[Long description.]]></media:text_content> 
    <media:filename><![CDATA[]]></media:filename> 

    <media:author><![CDATA[Rebecca Brayton]]></media:author> 
    <media:bliptv_thumbnail><![CDATA[A-RP-Honda-480i60_480x270.jpg]]></media:bliptv_thumbnail> 
    <media:preference_rate><![CDATA[4]]></media:preference_rate> 
</media:content> 

運行下面

$xml = simplexml_load_string(utf8_encode($cleaned), 'SimpleXMLElement', LIBXML_NOCDATA); 

代碼後它返回

["item"]=> 
array(100) { 
    [0]=> 
    object(SimpleXMLElement)#4 (5) { 
    ["title"]=> 
    string(56) "Honda Motor Company: Motorcycles to the Civic and Accord" 
    ["link"]=> 
    string(42) "http://www.link.com/index.php?id=9987" 
    ["description"]=> 
    string(232) "long description." 
    ["pubDate"]=> 
    string(31) "Fri, 23 Sep 2011 10:55:50 -0400" 
    ["guid"]=> 
    string(74) "https://link.cloudfront.net/581575d3053ac1a578065c10f2bac1be.mp4" 
    } 

沒有其他的代碼被此之前跑了,我似乎無法弄清楚爲什麼地球上這發生。任何人都知道背後的原因,是由於UTF-8編碼?

回答

1

你需要調用SimpleXMLElement->children()"media"命名空間來獲得它們的<media:xxx>一種格式的部分,或$ns參數傳遞給simplexml_load_string()指定要加載的命名空間:

$xml = simplexml_load_string(utf8_encode($cleaned), 'SimpleXMLElement', LIBXML_NOCDATA, 'media'); 

http://www.php.net/manual/en/function.simplexml-load-string.php

http://www.php.net/manual/en/simplexmlelement.children.php

+0

我試過你的方法,並因爲它看起來它應該工作,但它的返回空 例如 對象(SimpleXMLElement)#1(0){} – Bankzilla

+0

可能是因爲頂級'item'不是'media'命名空間中的東西 - 因此我爲什麼建議'item-> children('media')' 。 – Amber

+0

感謝您的幫助琥珀:)您的帖子指出我在正確的方向。跟隨這個博客,它的工作http://blog.sherifmansour.com/?p=302 – Bankzilla