liyandong
V2EX  ›  问与答

PHP的关于利用正则给URL加链接的问题

  •  
  •   liyandong · Mar 9, 2012 · 4371 views
    This topic created in 5202 days ago, the information mentioned may be changed or developed.
    [code]
    $return = preg_replace(array("/(?<=[^\]A-Za-z0-9-=\"'\\/])(https?|ftp|qqdl|thunder|bdhd|qvod|gopher|news|telnet|mms){1}:\/\/([A-Za-z0-9\/\-_+=.~!%@?#%&;:$\\()|]+)/ies","/([\n\s])www\.([a-z0-9\-]+)\.([A-Za-z0-9\/\-_+=.~!%@?#%&;:$\[\]\\()|]+)((?:[^,\t\s\n\r]*)?)/is","/(?<=[^\]A-Za-z0-9\/\-_.~?=:.])([A-Za-z0-9\-_.]+)@([A-Za-z0-9\-_][.][A-Za-z0-9\-_.]+)/is"),array("urlcut('\\1://\\2')","\\1<a href=\"http://www.\\2.\\3\\4\" target=\"_blank\">www.\\2.\\3\\4</a>","<a href=\"mailto:\\1@\\2\">\\1@\\2</a>"),$return);
    echo $return;
    [/code]

    这个正则换下来之后中文URL就悲剧了,对含有中文的URL有木有好方法?
    4 replies    1970-01-01 08:00:00 +08:00
    lizheming
        1
    lizheming  
       Mar 9, 2012
    我搅得直接匹配头尾不就挺好的么?干嘛需要这么麻烦啊……
    liyandong
        2
    liyandong  
    OP
       Mar 9, 2012
    @lizheming 如何匹配?
    liyandong
        3
    liyandong  
    OP
       Mar 9, 2012
    唉唉。还是用笨方法把。。。[A-Za-z0-9\/\-_+=.~!%@?#%&;:$\\()\[\]\.\x80-\xff|]+
    lizheming
        4
    lizheming  
       Mar 9, 2012
    @liyandong 唔,我的理解就是中间中(.*?)替代了,前面和后面跟你差不多,匹配https|http。。。还有.com|.net|.org|.me什么什么的...
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1256 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:40 · PVG 01:40 · LAX 10:40 · JFK 13:40
    ♥ Do have faith in what you're doing.