如何使用PHP或正则表达式重新排列HTML?

时间:2010-05-17 18:57:25

标签: php regex

我有$slider['image']的不同输出。两个例子如下。

第一个在开头和结尾都有<p></p>。 在第二个标记中,所有<img>标记都包含<p></p>标记。

<p>
    <span>Homepage</span><img src="../../assets/images/prints/print2_600x300.gif" alt="" width="600" height="300">
    <span>Content Page</span><img src="../../../assets/images/support_images/imageA_600x300.gif" alt="" width="600" height="300">
    <span>Dropdown Menu</span><img src="../../../assets/images/support_images/imageB_600x300.gif" alt="" width="600" height="300">
    <span>Comments List</span><img src="../../../assets/images/support_images/imageC_600x300.gif" alt="" width="600" height="300">
    <span>Comment Form</span><img src="../../../assets/images/support_images/imageD_600x300.gif" alt="" width="600" height="300">
</p>

两个

<p><span>Homepage</span></p>     
<p><img src="../../assets/images/prints/print2_600x300.gif" alt="" width="600" height="300"></p>
<p><span>Content Page</span></p>  
<p><img src="../../../assets/images/support_images/imageA_600x300.gif" alt="" 
width="600" height="300">
<p><span>Dropdown Menu</span></p>
<p><img src="../../../assets/images/support_images/imageB_600x300.gif" alt="" width="600" height="300"></p>
<p><span>Comments List</span></p>
<p><img src="../../../assets/images/support_images/imageC_600x300.gif" alt="" width="600" height="300"></p>
<p><span>Comment Form</span></p>
<p><img src="../../../assets/images/support_images/imageD_600x300.gif" alt="" width="600" height="300"

我需要将此更改为以下内容。

<li><span>Homepage</span><img alt="" src="assets/images/prints/print2_600x300.gif" /></li> 
<li><span>Content Page</span><img alt="" src="assets/images/support_images/imageA_600x300.gif" /></li> 
<li><span>Dropdown Menu</span><img alt="" src="assets/images/support_images/imageB_600x300.gif" /></li> 
<li><span>Comments List</span><img alt="" src="assets/images/support_images/imageC_600x300.gif" /></li> 
<li><span>Comment Form</span><img alt="" src="assets/images/support_images/imageD_600x300.gif" /></li>

我认为我可能需要正则表达式和php(explodestr_replaceforeach),但我需要一些帮助。

完整输出:

[0] =>; Array
    (
        [id] => 12
        [name] => Print 2
        [shortdesc] => <p>Print 2 short description</p>
        [longdesc] => <p>Print 2 long description</p>

        [thumbnail] => <p><img src="../../assets/images/prints/thumbnails/print2_223x112.gif" alt="" width="223" height="112"></p>
        [image] => <p><img src="../../assets/images/prints/print2_600x300.gif" alt="" width="600" height="300">Homepage<img src="../../../assets/images/support_images/imageA_600x300.gif" alt="" width="600" height="300">Content Page<img src="../../../assets/images/support_images/imageB_600x300.gif" alt="" width="600" height="300">Dropdown Menu<img src="../../../assets/images/support_images/imageC_600x300.gif" alt="" width="600" height="300">Comment List<img src="../../../assets/images/support_images/imageD_600x300.gif" alt="" width="600" height="300">Comment Form</p>
        [product_order] => 0
        [class] =>
        [grouping] =>
        [status] => active
        [category_id] => 5
        [featured] => front
        [other_feature] => none
        [price] => 0.00
    )

1 个答案:

答案 0 :(得分:1)

期待非常简单的任务,用正则表达式做你想做的事情并不容易。

您可以使用SAXDOM等XML解析器。

您还可以查看这两个库: