<?php
$a='<span class="ico-block"><a href="#"><img src="http://www.oxford-royale.co.uk/2013/wp-content/themes/ora/images/ico19.png" /></a></span><h2>';
$a=preg_replace("/<[^>]+?>/","\\0\\2\\4\\5",$a);
var_dump($a);
?>这个好像错了,请问错在哪里了?有点不明白了

解决方案 »

  1.   

    先声明,本人不懂PHP,所以不知道preg_replace这是个什么函数
    首先,让我按照正常逻辑分析一下你这个正则表达式:
    /<[^>]+?>/
    /和<还有>都是是普通字符,由/<开始由>/结尾(如果是匹配整个单词或字符的话那么使用\b和^还有$会更好?)
    ^>则表示除了>以外的字符
    +则表示>以外的字符出现1次或多次
    ?出现在这里我就不知道什么意思了但是,整篇看下来,诚如楼上所言,您,这是要干嘛?
      

  2.   

    把里面的超链接标签去掉,变成
    $a='<span class="ico-block"><img src="http://www.oxford-royale.co.uk/2013/wp-content/themes/ora/images/ico19.png" /></span><h2>';
      

  3.   

    $a='<span class="ico-block"><a href="#"><img src="http://www.oxford-royale.co.uk/2013/wp-content/themes/ora/images/ico19.png" /></a></span><h2>';
    $str=preg_replace("/<\/?a([^>]*)>/", "", $a);
    var_dump($str);有些不严谨,清除所有a 开头的标签。
      

  4.   

    $a='<span class="ico-block"><a href="#"><img src="http://www.oxford-royale.co.uk/2013/wp-content/themes/ora/images/ico19.png" /></a></span><h2>';
    $str=preg_replace("/(?:<a[^>]*>)(.*)(?:<\/a>)/", "\\1", $a);
    print_r($str);