【问题标题】:webpy - url autodetect some part of the string to hyperlinkwebpy - url 自动检测到超链接的字符串的某些部分
【发布时间】:2014-01-16 10:55:10
【问题描述】:

我使用 webpy 创建了一个示例博客应用程序。我在这里使用了一些代码(Replace URL with a link using regex in python)来替换 URL,但是当我渲染页面时它不会显示超链接,而只是一个纯文本

在我的模板中:

    <p>
    <i>$datestr(post.posted_on) by $user</i><br/><br/>
    $urlify.formatstring(post.content)
    <p>

urlify.py

    def formatstring(self, value):
    pat1 = re.compile(r"(^|[\n ])(([\w]+?://[\w\#$%&~.\-;:=,?@\[\]+]*)(/[\w\#$%&~/.\-;:=,?@\[\]+]*)?)", re.IGNORECASE | re.DOTALL)

    pat2 = re.compile(r"(^|[\n ])(((www|ftp)\.[\w\#$%&~.\-;:=,?@\[\]+]*)(/[\w\#$%&~/.\-;:=,?@\[\]+]*)?)", re.IGNORECASE | re.DOTALL)
    value = pat1.sub(r'\1<a href="\2" target="_blank">\3</a>', value)
    value = pat2.sub(r'\1<a href="http://\2" target="_blank">\3</a>', value)

    return value

示例文本:

这个网址会让你的生活变得一团糟!所以不要点击这个。a href="http://www.someurl.com">一些网址/a>.

页面渲染后的预期应该是:

这个网址会让你的生活变得一团糟!所以不要点击这个。some url

但实际是:

这个网址会让你的生活变得一团糟!所以不要点击这个。a href="http://www.someurl.com">一些网址/a>.

网址未更改为超链接。

编辑:在我的模板中: 而不是 $content,应该是 $:content 将 url 视为超链接。

【问题讨论】:

  • 标题中不要写“已解决”。

标签: python web.py


【解决方案1】:

代码似乎没问题,你能把你传递给formatstring方法的参数贴出来

【讨论】:

  • 我已经编辑了我的帖子以添加一些细节以使我的问题更加清晰。
  • 我认为您误解了代码的作用。它需要一个 url,比如 http://www.example.com/foo/bar 并显示一个仅包含域名作为文本的链接,因此在 html 中将是 &lt;a href="http://www.example.com/foo/bar" target="_blank"&gt;http://www.example.com&lt;/a&gt;
  • 顺便说一句,获取域名(来自http://www.example.com/foo/bar的字符串"example")并非易事,你可以看看这个相关问题stackoverflow.com/questions/569137/…
  • 是的,你说得对,我想我误解了这个功能。我已经解决了我的问题。而不是在我的模板中:$context,它应该是 $:content 将 url 视为超链接。顺便说一句,感谢您的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多