[Discussion] Sửa link dạng BB Code thành dạng HTML |
12/12/2010 23:31:20 (+0700) | #1 | 226948 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
Do anh conmale disable link, nên hàng loạt topic chứa link kiểu:
[ url=/hvaonline/posts/list/136.html ]Sử dụng GRUB[ /url ]
(có thể có hoặc không có ngoặc kép bao quanh link)
sẽ chỉ hiện thị mỗi đoạn text: /hvaonline/posts/list/136.html. Giờ mình muốn sửa thành:
<a href="/hvaonline/posts/list/136.html" target="_blank">Sử dụng GRUB</a>
Bạn nào giúp mình với . |
|
Let's build on a great foundation! |
|
|
|
[Discussion] Sửa link dạng BB Code thành dạng HTML |
13/12/2010 01:27:03 (+0700) | #2 | 226951 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
quanta wrote:
Do anh conmale disable link, nên hàng loạt topic chứa link kiểu:
[ url=/hvaonline/posts/list/136.html ]Sử dụng GRUB[ /url ]
(có thể có hoặc không có ngoặc kép bao quanh link)
sẽ chỉ hiện thị mỗi đoạn text: /hvaonline/posts/list/136.html. Giờ mình muốn sửa thành:
<a href="/hvaonline/posts/list/136.html" target="_blank">Sử dụng GRUB</a>
Bạn nào giúp mình với .
Lưu ý, chỉ có moderators và chỉ có một vài phân mục cho phép post dạng html. |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Discussion] Sửa link dạng BB Code thành dạng HTML |
13/12/2010 08:41:44 (+0700) | #3 | 226961 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
conmale wrote:
Lưu ý, chỉ có moderators và chỉ có một vài phân mục cho phép post dạng html.
OK anh. Cái này em đang muốn thảo luận trên phương diện kỹ thuật: sed, awk, tr, Perl, ... thôi anh à. |
|
Let's build on a great foundation! |
|
|
|
[Discussion] Sửa link dạng BB Code thành dạng HTML |
13/12/2010 13:35:46 (+0700) | #4 | 226977 |
|
secmask
Elite Member
|
0 |
|
|
Joined: 29/10/2004 13:52:24
Messages: 553
Location: graveyard
Offline
|
|
quanta wrote:
conmale wrote:
Lưu ý, chỉ có moderators và chỉ có một vài phân mục cho phép post dạng html.
OK anh. Cái này em đang muốn thảo luận trên phương diện kỹ thuật: sed, awk, tr, Perl, ... thôi anh à.
Code:
echo "[ url=/hvaonline/posts/list/136.html ]GRUB[ /url ]"|sed 's|\(\[[[:space:]]*url=\([^[:space:]]*\)[[:space:]]]\([^[\[]*\).*\)|<a href="\2">\3</a>|g'
<a href="/hvaonline/posts/list/136.html">GRUB</a>
lằng ngoằng mãi mới ra đc cái này
|
|
|
|
|
[Discussion] Sửa link dạng BB Code thành dạng HTML |
13/12/2010 14:32:03 (+0700) | #5 | 226978 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
Hello secmask,
- Cái space anh thêm vào trước và sau url, /url chỉ để cho nó không bị biến thành link thôi, chứ thật ra là không có.
- Ngoài ra, cần chú ý đến dấu ngoặc kép bao quanh link:
[ url="/hvaonline/posts/list/136.html" ]Sử dụng GRUB[ /url ]
và target="_blank" nữa.
Mời các bạn tiếp tục tham gia.
PS: delimiter là pipe thay vì forward slash nhìn lạ ghê.
|
|
Let's build on a great foundation! |
|
|
|
[Discussion] Sửa link dạng BB Code thành dạng HTML |
13/12/2010 15:19:52 (+0700) | #6 | 226979 |
|
WinDak
Researcher
|
Joined: 27/01/2002 11:15:00
Messages: 223
Offline
|
|
Đây là bằng perl, mình chỉ nghịch chút nên chưa cẩn thận lắm, (giả sử cái bbcode là correct và giả sử cái link trong url="" là link gồm a-zA-Z0-9\/. còn nếu có cái khác thì cứ tiện nghi thêm vào thôi)
Code:
perl -e 'shift=~/\[url=\"*([\w\.\/\:]+)\"*\](.+)\[\/url\]/; print "\<a href=\"$1\" target=\"_blank\"\>$2\<\/a\>\n";' "[url=/hvaonline/posts/list/136.html]Sử dụng GRUB[/url]"
Code:
perl -e 'shift=~/\[url=\"*([\w\.\/\:]+)\"*\](.+)\[\/url\]/; print "\<a href=\"$1\" target=\"_blank\"\>$2\<\/a\>\n";' '[url="/hvaonline/posts/list/136.html"]Sử dụng GRUB[/url]'
Code:
<a href="/hvaonline/posts/list/136.html" target="_blank">Sử dụng GRUB</a>
|
|
-- w~ -- |
|
|
|
[Discussion] Sửa link dạng BB Code thành dạng HTML |
13/12/2010 18:29:41 (+0700) | #7 | 226986 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
Các bạn giúp mình tìm xem sai ở đâu mà khi có ngoặc kép bao quanh link thì lệnh sau trả về kết quả không đúng (thừa ra một dấu ngoặc kép):
Code:
$ cat input
[url="/hvaonline/posts/list/136.html"]GRUB[/url]
[url=/hvaonline/posts/list/136.html]GRUB[/url]
Code:
$ sed 's/\[url="\?\(.*\)"\?\]\(.*\)\[\/url\]/<a href="\1" target="_blank">\2<\/a>/' input
<a href="/hvaonline/posts/list/136.html"" target="_blank">GRUB</a>
<a href="/hvaonline/posts/list/136.html" target="_blank">GRUB</a>
|
|
Let's build on a great foundation! |
|
|
|
[Discussion] Sửa link dạng BB Code thành dạng HTML |
13/12/2010 18:33:51 (+0700) | #8 | 226987 |
|
secmask
Elite Member
|
0 |
|
|
Joined: 29/10/2004 13:52:24
Messages: 553
Location: graveyard
Offline
|
|
Code:
$ echo "[url=/hvaonline/posts/list/136.html]Su dung GRUB[/url]"|sed 's|\(\[url="\{0,1\}\([^]^"]*\)"\{0,1\}]\([^[]*\)\[/url]\)|<a href="\2" target="_blank">\3</a>|g'
<a href="/hvaonline/posts/list/136.html" target="_blank">Su dung GRUB</a>
ok, em mod lại thế này. |
|
|
|
|
[Discussion] Sửa link dạng BB Code thành dạng HTML |
13/12/2010 19:30:56 (+0700) | #9 | 226991 |
|
WinDak
Researcher
|
Joined: 27/01/2002 11:15:00
Messages: 223
Offline
|
|
quanta wrote:
Các bạn giúp mình tìm xem sai ở đâu mà khi có ngoặc kép bao quanh link thì lệnh sau trả về kết quả không đúng (thừa ra một dấu ngoặc kép):
Code:
$ cat input
[url="/hvaonline/posts/list/136.html"]GRUB[/url]
[url=/hvaonline/posts/list/136.html]GRUB[/url]
Code:
$ sed 's/\[url="\?\(.*\)"\?\]\(.*\)\[\/url\]/<a href="\1" target="_blank">\2<\/a>/' input
<a href="/hvaonline/posts/list/136.html"" target="_blank">GRUB</a>
<a href="/hvaonline/posts/list/136.html" target="_blank">GRUB</a>
Có lẽ tại phần lấy tham số match đầu tiên ra quanta xài (.*) cho nên nó sẽ quét đến cuối string lấy tất cả vào ( bao gồm cả `"` ). thử giới hạn lại thành ([\w\/\:\.]*) hi vọng sẽ ra kết quả đúng |
|
-- w~ -- |
|
|
|
[Discussion] Sửa link dạng BB Code thành dạng HTML |
14/12/2010 09:02:43 (+0700) | #10 | 227002 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
WinDak wrote:
Có lẽ tại phần lấy tham số match đầu tiên ra quanta xài (.*) cho nên nó sẽ quét đến cuối string lấy tất cả vào ( bao gồm cả `"` ).
OK, cảm ơn WinDak. Mình nhớ là có đọc cái rule "leftmost match, longest possible string, zero also matches." này rồi, thế mà lại quên mất.
WinDak wrote:
thử giới hạn lại thành ([\w\/\:\.]*) hi vọng sẽ ra kết quả đúng
Cái regex này cũng chưa đúng bạn à. Thôi thì dùng cách của secmask cho tổng quát, hoặc thế này ([a-z0-9:\/\.#]*) cũng được. |
|
Let's build on a great foundation! |
|
|
|
[Discussion] Sửa link dạng BB Code thành dạng HTML |
14/12/2010 09:14:23 (+0700) | #11 | 227003 |
|
WinDak
Researcher
|
Joined: 27/01/2002 11:15:00
Messages: 223
Offline
|
|
quanta wrote:
WinDak wrote:
Có lẽ tại phần lấy tham số match đầu tiên ra quanta xài (.*) cho nên nó sẽ quét đến cuối string lấy tất cả vào ( bao gồm cả `"` ).
OK, cảm ơn WinDak. Mình nhớ là có đọc cái rule "leftmost match, longest possible string, zero also matches." này rồi, thế mà lại quên mất.
WinDak wrote:
thử giới hạn lại thành ([\w\/\:\.]*) hi vọng sẽ ra kết quả đúng
Cái regex này cũng chưa đúng bạn à. Thôi thì dùng cách của secmask cho tổng quát, hoặc thế này ([a-z0-9:\/\.#]*) cũng được.
cái đó sao lại tổng quát a-z0-9 làm sao = \w ? ( \w còn gồm cả letters, digits, và underscores)
đúng là phải thêm # nữa, nhưng vẫn chỉ là assume là gồm những cái này thôi ( cho là bbcode đã tự check ), chứ thật sự url mà muốn match chuẩn thì phức tạp phết
Code:
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
http://regexlib.com/Search.aspx?k=URL
|
|
-- w~ -- |
|
|