我有一个字符串
$str = <<<EOT
<pif key="p1" value="P1">
p1=P1 aa
</pif>
<pif key="p1" value="P2">
p1=P2 bb
</pif>
EOT;
现在我数组$arr=('<pif key="p1" value="P1">','<pif key="p1" value="P2">');是这样的
那么我该如何匹配字符串中相同的标签。各位很急啊,谢谢啦

解决方案 »

  1.   

    <?php
    $str = <<<EOT
    1111
    <pif  key="p9" value="a-a">
    p9=a-a
    </pif>
    2222
    <pif  key="p1" value="P1">
    p1=P1
    </pif>
    3333
    <pif  key="p2" value="P2">
    p2=P2
    </pif>
    444
    <pif  key="p2" value="P2">
    p2=P2
    </pif>
    555
    EOT;
    $param=array("p1"=>"P1","p2"=>"P2");foreach($param as $key=>$value)
    {
        $str  = preg_replace('#(.*?)<pif[\s]+key\="'.$key.'"[\s]+value\="'.$value.'"\>(.+?)<\/pif>(.*?)#s',"\\1\\2\\3",$str );
    }$str  = preg_replace('#(.*?)<pif[\s]+key\="(.*?)"[\s]+value\="(.*?)"\>(.+?)<\/pif>(.*?)#s',"\\1\\5",$str );
    echo $str;
    ?>
    弄好了,哎正则太复杂了。