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属性中。

上面的例子应该是;

<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>

可能吗?如果可能的话,怎么做才合理?

4

1 回答 1

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>
');
 }
?>
于 2013-06-12T16:58:19.880 回答