$stringA = '这里是你们的官方网站http://www.yourweb.com请来吧,,,,http://www.yourweb.com来吧呵呵乱写的文字'; 
$pa = "/(http:\/\/[\w\d\-]+\.[\w\d\-]+\.[\w\d\-]+)/is";
$stringA = preg_replace($pa, "<a href='\\1'>\\1</a>", $stringA);
echo $stringA;

解决方案 »

  1.   

    URL正则表达式根据自己的需要适当修改吧。另一种,作下参考:$str='这里是你们的官方网站http://www.yourweb.com请来吧,,,,来吧呵呵乱写的文字';
    $pattern="/(http:\/\/[-\w\.]+(:\d+)?(\/([_\w\/\.]*)?)?)/is";
    $replace="<a href=\"\$1\">\$1</a>";
    $str=preg_replace($pattern, $replace,$str);
    echo $str;
      

  2.   

    一楼的好些,二楼的后面的URL转不出来!
      

  3.   

    刚测试了下你的正则,其实我也是在学习这个!你的测试结果如下这里是你们的官方网站http://www.yourweb.com请来吧,,,,来吧呵呵乱写的文字
    一楼的是如下这里是你们的官方网站http://www.yourweb.com请来吧,,,,http://www.yourweb.com来吧呵呵乱写的文字 
      

  4.   

    一楼的正解,但如果http://aa.bb.yourweb.com就不行了
      

  5.   

    对不起啊,你的代码少了后面的URL,我没注意!
      

  6.   


    //给你个不限子域的
    $stringA = '这里是你们的官方网站http://www.yourweb.com请来吧,,,,来吧呵呵乱写的文字'; 
    $pa = "|http://[\w\d\-.]+(?=[^\w\d\-\.])|is";
    $stringA = preg_replace($pa, "<a href='$0'>$0</a>", $stringA);
    echo $stringA;