2013-03-22 19 views
0
<title><![CDATA[ hello 
    ]]></title> 
      <link>http://www.google.com</link> 
      <description><img class="img" src="http://google.com/a.jpg" alt="" /></a>]]></description> 
    <title><![CDATA[ good 
    ]]></title> 
      <link>http://www.google.com</link> 
      <description><img class="img" src="http://google.com/b.jpg" /></a>]]></description> 
    <title><![CDATA[ world 
    ]]></title> 
      <link>http://www.google.com</link> 
      <description><img class="img" src="http://google.com/c.jpg" alt="" /></a>]]></description> 

我想文字<![CDATA[]]>之間進行復制,然後將其粘貼到ALT屬性使用。兩個字符串之間用PHP的XML解析器

上面的例子應該是;

<title><![CDATA[ hello 
    ]]></title> 
      <link>http://www.google.com</link> 
      <description><img class="img" src="http://google.com/a.jpg" alt="hello" /></a>]]></description> 
    <title><![CDATA[ good 
    ]]></title> 
      <link>http://www.google.com</link> 
      <description><img class="img" src="http://google.com/b.jpg" /></a>]]></description> 
    <title><![CDATA[ world 
    ]]></title> 
      <link>http://www.google.com</link> 
      <description><img class="img" src="http://google.com/c.jpg" alt="world" /></a>]]></description> 

這可能嗎? 如果可能,如何做到這一點是合理的?

+0

您的XML被打破:HTTP://www.xmlvalidation .COM – michi 2013-03-23 20:31:38

回答

0

您可以刪除htmlspecialchars,因爲它僅用於測試目的。 由於@ michi說你需要有效的xml。每個組應該在一個塊容器對於實施例<example>stuff </example>如下

測試數據

<?php 
$testdata = <<<XML 
<?xml version='1.0'?> 
<test> 

<example> 
<title><![CDATA[ example 1]]></title> 
      <link>http://www.example1.com</link> 
      <description><![CDATA[ <img class="img" src="http://google.com/a.jpg" alt="" /></a>]]></description> 
</example> 

<example> 
    <title><![CDATA[ example 2]]></title> 
      <link>http://www.example2.com</link> 
      <description><![CDATA[ <img class="img" src="http://google.com/b.jpg" /></a>]]></description> 

     </example> 

     <example> 
    <title><![CDATA[ example 3 ]]></title> 
      <link>http://www.example3.com</link> 
      <description><![CDATA[ <img class="img" src="http://google.com/c.jpg" alt="" /></a>]]></description> 

      </example> 


</test> 
XML; 

輸出代碼

$xml = simplexml_load_string($testdata, 'SimpleXMLElement', LIBXML_NOCDATA); 

foreach ($xml->example as $v){ 

// find and replace alt 
$img = str_replace('alt=""','', $v->description); 
$img = str_replace('<img','<img alt="'.$v->title.'"', $img); 


echo htmlspecialchars(
' 
<example> 
    <title><![CDATA[ '.$v->title.']]></title> 
    <link>'.$v->link.'</link> 
    <description><![CDATA[ '.$img.'</a>]]></description> 
</example> 
'); 
} 
?> 
相關問題