URLをアンカーリンクとIMGタグに置換

木曜日, 3月 10th, 2011 by

テキスト内のURLを、アンカーリンクとIMGタグに置換するサービスをリリースしました。

なお、ttpで始まるプロトコルは、httpに自動修正します。

ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
import re,cgi

class MainHandler(webapp.RequestHandler):
    def post(self):
        self.get()

    def get(self):
        raw = encoded = ""
        if self.request.get("encode"):
            encoded = cgi.escape(linkURLs(imgTags(ttp2http(self.request.get("raw")))))
            raw = cgi.escape(self.request.get("raw"))
       
        self.response.out.write(u"""
<html>
<head><title>URL Linker</title></head>
<body>
<h1>URL Linker</h1>
左側のテキストエリアにURLを含むテキストを入力して変換ボタンをクリックしてください。
URL部分がリンクに変換されたテキストが右側のテキストエリアに表示されます。

<form action="/" method="post"><input type="hidden" name="phpMyAdmin" value="cfc2644bd9c947213a0141747c2608b0" />
<textarea name="raw" style="float:left;width:450px;height:450px">%s</textarea>
<div style="float:left;margin-top:70px">
<input name="encode" type="submit" value=" > 変換 > "><br>
</div>

<textarea name="encoded" style="float:left;width:450px;height:450px">%s</textarea>
</form><br clear="all">
Developed by <a href="http://php6.jp/python">python練習帳</a>
</body>
</html>
"""
% (raw, encoded))

def ttp2http(str):
  return re.compile(r'([^"]|^)h?ttp(://)').sub(r'\1http\2', str)

def linkURLs(str):
  return re.compile(r'([^"]|^)(https?|ftp)(://[\w:;/.?%#&=+-]+)').sub(r'\1<a href="\2\3?phpMyAdmin=cfc2644bd9c947213a0141747c2608b0" target="_blank">\2\3</a>', str)
 
def imgTags(str):
  return re.compile(r'([^"]|^)(https?)(://[\w:;/.?%#&=+-]+\.(jpg|jpeg|png|gif|JPG|JPEG|PNG|GIF))').sub(r'\1<img src="\2\3"/>', str)
 
def main():
    application = webapp.WSGIApplication([('/', MainHandler)],
                                         debug=True)
    util.run_wsgi_app(application)

if __name__ == '__main__':
    main()

Facebook comments:

comments

Leave a Reply


Get Adobe Flash player
single