liyandong
V2EX  ›  问与答

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

  •  
  •   liyandong · Mar 9, 2012 · 4730 views
    This topic created in 5359 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
    lizheming
    Mar 9, 2012
    1
    我搅得直接匹配头尾不就挺好的么?干嘛需要这么麻烦啊……
    liyandong
    liyandong
    OP
    Mar 9, 2012
    2
    @lizheming 如何匹配?
    liyandong
    liyandong
    OP
    Mar 9, 2012
    3
    唉唉。还是用笨方法把。。。[A-Za-z0-9\/\-_+=.~!%@?#%&;:$\\()\[\]\.\x80-\xff|]+
    lizheming
    lizheming
    Mar 9, 2012
    4
    @liyandong 唔,我的理解就是中间中(.*?)替代了,前面和后面跟你差不多,匹配https|http。。。还有.com|.net|.org|.me什么什么的...
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1017 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:56 · PVG 02:56 · LAX 10:56 · JFK 13:56
    ♥ Do have faith in what you're doing.