<?php
$str = <<<EOT
呵呵 http://www.abc.com 呵呵 <img src="http://www.cba.com/a.jig">呵呵呵呵呵呵 <a href=http://www.aabbcc.com>呵呵呵呵呵呵
EOT;echo preg_replace('|[^=\'"](http://[a-z\.]+)|i','<a href="\1" target="_blank">\1</a>', $str);
?> output:呵呵<a href="http://www.abc.com" target="_blank">http://www.abc.com</a> 呵呵 <img src="http://www.cba.com/a.jig">呵呵呵呵呵呵 <a href=http://www.aabbcc.com>呵呵呵呵呵呵

解决方案 »

  1.   

    如果字符串就是以http://开头,这个正则就失效了
    <?php
    $str = <<<EOT
    http://www.abc.com 呵呵 <img src="http://www.cba.com/a.jig">呵呵呵呵呵呵 <a href=http://www.aabbcc.com>呵呵呵呵呵呵
    EOT;
      

  2.   

    <?php
    $str = <<<EOT
    http://www.abc.com 呵呵 <img src="http://www.cba.com/a.jig">呵呵呵呵呵呵 <a href=http://www.aabbcc.com>呵呵呵呵呵呵
    EOT;echo preg_replace('|[^=\'"]?(http://[a-z\.]+)|i','<a href="\1" target="_blank">\1</a>', $str);
    ?>