例如a:2:{s:4:"link";s:118:"http://v.youku.com/v_s ...NzIyMDU2.html";s:4:"data";s:47:"http://v.youku.com/v_show/id_XMTI5NzIyMDU2.html";}我想提取出 这串字符中 最后面的网址
即:http://v.youku.com/v_show/id_XMTI5NzIyMDU2.html请问这个正则要如何写!?

解决方案 »

  1.   

    这个是JSON吧?!
    如果是的话
    PHP中 使用 json_decode() 用这个函数来解析
      

  2.   

    这个是php的serialize函数序列化数组生成的序列化串。
    反解成数组就用unserialize函数。
      

  3.   

    <?php
    $str = "a:2:{s:4:\"link\";s:118:\"http://v.youku.com/v_s ...NzIyMDU2.html\";s:4:\"data\";s:47:\"http://v.youku.com/v_show/id_XMTI5NzIyMDU2.html\"";
    $str = str_replace("\"","'",$str);
    preg_match_all("/http:\/\/[^\/]+?\/[^\/]+?\/[^\.]+\.html'$/",$str,$matchs);
    print_r($matchs);
    ?>
      

  4.   

    一定要正则吗?<?php
        
    $str = "a:2:{s:4:\"link\";s:118:\"http://v.youku.com/v_s ...NzIyMDU2.html\";s:4:\"data\";s:47:\"http://v.youku.com/v_show/id_XMTI5NzIyMDU2.html\"a:2:{s:4:\"link\";s:118:\"http://v.youku.com/v_s ...NzIyMDU2.html\";s:4:\"data\";s:47:\"http://v.youku.com/v_show/id_XMTI5NzIyMDU2s.html\""; $str = str_repeat($str  . '"http://www.csdn.net/"', 5); //匹配一个以http:为开头,并以"或'结尾的url,加上一个正向负零宽断言:没有三个相连的 "..."
        preg_match_all('/http:\/\/(?![^\'"]*?\.{3}).*?(?=[\'"])/i' , $str , $ary); echo '<pre>';    print_r($ary); echo '</pre>';
    ?>