med*_*iev 11
您可以加载文档了一个DOM/HTML解析库(见html5lib),抓住所有文本节点,与它们匹配一个正则表达式,并使用一个PCRE如周围锚替换为正则表达式替换的URI的文本节点:
/(https?:[;\/?\\@&=+$,\[\]A-Za-z0-9\-_\.\!\~\*\'\(\)%][\;\/\?\:\@\&\=\+\$\,\[\]A-Za-z0-9\-_\.\!\~\*\'\(\)%#]*|[KZ]:\\*.*\w+)/g
Run Code Online (Sandbox Code Playgroud)
我很确定你可以匆匆找到并找到某种实用的功能,但我想不出任何偏离我的头脑.
编辑:尝试使用这里的答案:在格式化纯文本时如何让python-markdown另外"urlify"链接?
import re
urlfinder = re.compile("([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}|((news|telnet|nttp|file|http|ftp|https)://)|(www|ftp)[-A-Za-z0-9]*\\.)[-A-Za-z0-9\\.]+):[0-9]*)?/[-A-Za-z0-9_\\$\\.\\+\\!\\*\\(\\),;:@&=\\?/~\\#\\%]*[^]'\\.}>\\),\\\"]")
def urlify2(value):
return urlfinder.sub(r'<a href="\1">\1</a>', value)
Run Code Online (Sandbox Code Playgroud)
在字符串上调用urlify2,如果你不处理DOM对象,我认为就是这样.
我经常狩猎,尝试了这些解决方案并且对它们的可读性或功能不满意,所以我推出了以下内容:
_urlfinderregex = re.compile(r'http([^\.\s]+\.[^\.\s]*)+[^\.\s]{2,}')
def linkify(text, maxlinklength):
def replacewithlink(matchobj):
url = matchobj.group(0)
text = unicode(url)
if text.startswith('http://'):
text = text.replace('http://', '', 1)
elif text.startswith('https://'):
text = text.replace('https://', '', 1)
if text.startswith('www.'):
text = text.replace('www.', '', 1)
if len(text) > maxlinklength:
halflength = maxlinklength / 2
text = text[0:halflength] + '...' + text[len(text) - halflength:]
return '<a class="comurl" href="' + url + '" target="_blank" rel="nofollow">' + text + '<img class="imglink" src="/images/linkout.png"></a>'
if text != None and text != '':
return _urlfinderregex.sub(replacewithlink, text)
else:
return ''
Run Code Online (Sandbox Code Playgroud)
你需要获得一个链接图像,但这很容易.这是专门为用户提交的文本,如评论,我认为通常是人们正在处理的.
归档时间: |
|
查看次数: |
9168 次 |
最近记录: |