dtgj8529 2011-08-31 15:09
浏览 59
已采纳

如何在php中的字符串中替换## th匹配?

So here comes the problem: I want to paste an advertisement after a specified ##th paragraph.

Let me show:

<p><img src="an/images/pic.jpg" /></p>
<p>Intro text</p>
<p>A paragraph</p>
<p>Another paragraph</p>

I want to paste the advertisement below the second paragraph. The final code should be like that:

<p><img src="an/images/pic.jpg /></p>
<p>Intro text</p>
<div>Yepp, let's make money</div>
<p>A paragraph</p>
<p>Another paragraph</p>

I tried some regexp but i don't get it. Ladies and Gentlemen please help me.

  • 写回答

3条回答 默认 最新

  • donglang2010 2011-08-31 15:21
    关注

    Taking RegEx match open tags except XHTML self-contained tags into consideration you might want to use a DOM/HTML parser for this.

    <?php
    $doc = new DOMDocument;
    $doc->loadhtml( getHTML() );
    
    $xpath = new DOMXPath($doc);
    $ns = $xpath->query( '/html/body/p[2]' );
    if ( 0 < $ns->length ) {
        $parent = $ns->item(0)->parentNode;
        $nextSibling = $ns->item(0)->nextSibling;
    
        $p = $doc->createElement('p', 'Hi, this is Scott coming to you from another place and time');
        $parent->insertBefore($p, $nextSibling);
    }
    echo $doc->savehtml();
    
    function getHTML() {
    return '<html><head><title>...</title><body>
    <p><img src="an/images/pic.jpg" /></p>
    <p>Intro text</p>
    <p>A paragraph</p>
    <p>Another paragraph</p>
    </body></html>';
    }
    

    prints

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
    <html><head><title>...</title></head><body>
    <p><img src="an/images/pic.jpg"></p>
    <p>Intro text</p><p>Hi, this is Scott coming to you from another place and time</p>
    <p>A paragraph</p>
    <p>Another paragraph</p>
    </body></html>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line