<?php$data =<<<HTML<div class="AAAAAAAAAA">11111111111<div><div class="Tab aaaaaa">
<ul>
<li><a href="#" target="_blank">111111111111111111111</a></li>
<li><a href="#" target="_blank">22222222222222222</a></li>
<li><a href="#" target="_blank">3333333333333333333</a></li>
<li><a href="#" target="_blank">44444444444444</a></li>
<li><a href="#" target="_blank">55555555555555555</a></li>
</ul>
</div><div class="AAAAAAAAAA">11111111111<div><div class="Tab bbbbbb">
<dl>
<dt>sdfdfsadgasdg</dt>
<dd>asddddddddddddddddddddddddddddd</dd>
</dl>
<dl>
<dt>sdfdfsadgasdg</dt>
<dd>asddddddddddddddddddddddddddddd</dd>
</dl>
<dl>
<dt>sdfdfsadgasdg</dt>
<dd>asddddddddddddddddddddddddddddd</dd>
</dl>
</div><div class="AAAAAAAAAA">11111111111<div><div class="Tab cccccc">
<div class="fl">11111111111111</div>
<div class="fr">2222222222222222222</div>
</div><div class="AAAAAAAAAA">11111111111<div><div class="Tab dddddd">
<a href="#" target="_blank">1111111111111111</a>
<a href="#" target="_blank">222222222222</a>
<a href="#" target="_blank">333333333333333</a>
</div>HTML;$dA =preg_replace('/(<div class=\")Tab( |  |)(.*?\">)(.*?)(<\/div>)/is','$1$3\$tpl[a_1]$5',$data);
echo "$dA";?>
求大虾修改
我想要替换到的数据是 html中的所有元素中带有 class="Tab(.*)" 所包含中间部分的代码 替换成 $tpl[a_1] 这样的变量  但是如何让这个变量中 a_N N自增呢?
如替换成以下这样子<div class="AAAAAAAAAA">11111111111<div><div class="Tab aaaaaa">
$tpl[a_1]
</div><div class="AAAAAAAAAA">11111111111<div><div class="Tab bbbbbb">
$tpl[a_2]
</div><div class="AAAAAAAAAA">11111111111<div><div class="Tab cccccc">
$tpl[a_3]
</div><div class="Tab dddddd">$tpl[a_4]<div><ul class="Tab eeeeee">
$tpl[a_5]
</ul><p class="Tab ffffff">$tpl[a_6]</p>
正则.正则替换 php替换php批量替换html代码

解决方案 »

  1.   

    $i = 1;
    $dA =preg_replace('/(<div class=\")Tab( |  |)(.*?\">)(.*?)(<\/div>)/ise','"$1$3$"."tpl[a_".($i++)."]$5"',$data);
    echo "$dA"; 
    <div class="AAAAAAAAAA">11111111111<div>
     
    <div class="aaaaaa">$tpl[a_1]</div>
     
    <div class="AAAAAAAAAA">11111111111<div>
     
    <div class="bbbbbb">$tpl[a_2]</div>
     
    <div class="AAAAAAAAAA">11111111111<div>
     
    <div class="cccccc">$tpl[a_3]</div>
    <div class="fr">2222222222222222222</div>
    </div>
     
    <div class="AAAAAAAAAA">11111111111<div>
     
    <div class="dddddd">$tpl[a_4]</div>
     
      

  2.   

    Quote: 引用 1 楼 xuzuning 的回复:

    $i = 1;
    $dA =preg_replace('/(<div class=\")Tab( |  |)(.*?\">)(.*?)(<\/div>)/ise','"$1$3$"."tpl[a_".($i++)."]$5"',$data);
    echo "$dA";<?php
    $data =<<<HTML
    <div class="Tab aaaaaa">
    <ul>
    <li><a href="#" target="_blank">111111111111111111111</a></li>
    <li><a href="#" target="_blank">22222222222222222</a></li>
    <li><a href="#" target="_blank">3333333333333333333</a></li>
    </ul>
    </div><ul class="Tab aaaaaa">
    <li><a href="#" target="_blank">111111111111111111111</a></li>
    <li><a href="#" target="_blank">22222222222222222</a></li>
    <li><a href="#" target="_blank">3333333333333333333</a></li>
    </ul><div class="Tab cccccc">
    <div class="fl">11111111111111</div>
    <div class="fr">2222222222222222222</div>
    </div><p class="Tab dddddd">11111111111<p><div class="Tab eeeeee"><p>11111111111<p></div>HTML;$i = 1;
    $dA =preg_replace('/(<(div|ul|p) class=\")Tab( |  |)(.*?\">)(.*?)(<\/(div|ul|p)>)/ise','"$1$4$"."tpl[a_".($i++)."]$6"',$data);
    echo "$dA";?>
    <div class="aaaaaa">$tpl[a_1]</ul>
    </div>
     
    <ul class="aaaaaa">$tpl[a_2]</ul>
     
    <div class="cccccc">$tpl[a_3]</div>
    <div class="fr">2222222222222222222</div>
    </div>
     
    <p class="dddddd">$tpl[a_4]<p><div class="eeeeee">$tpl[a_5]<p>//大虾,如果我的 html 代码是上面那样的,那我这个正则好像不对,怎么修改下,得到下面的样式 
    <div class="Tab aaaaaa">
    $tpl[a_1]
    </div><ul class="Tab aaaaaa">
    $tpl[a_2]
    </ul><div class="Tab cccccc">
    $tpl[a_3]
    </div><p class="dddddd">$tpl[a_4]<p><div class="eeeeee">$tpl[a_5]</div>