<![CDATA[Latest posts for the topic "Sửa link dạng BB Code thành dạng HTML"]]> /hvaonline/posts/list/24.html JForum - http://www.jforum.net Sửa link dạng BB Code thành dạng HTML [ 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 ;).]]> /hvaonline/posts/list/36922.html#226948 /hvaonline/posts/list/36922.html#226948 GMT Sửa link dạng BB Code thành dạng HTML

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.]]>
/hvaonline/posts/list/36922.html#226951 /hvaonline/posts/list/36922.html#226951 GMT
Sửa link dạng BB Code thành dạng HTML

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 à.]]>
/hvaonline/posts/list/36922.html#226961 /hvaonline/posts/list/36922.html#226961 GMT
Sửa link dạng BB Code thành dạng HTML

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 :D ]]>
/hvaonline/posts/list/36922.html#226977 /hvaonline/posts/list/36922.html#226977 GMT
Sửa link dạng BB Code thành dạng HTML [ 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ê. ]]> /hvaonline/posts/list/36922.html#226978 /hvaonline/posts/list/36922.html#226978 GMT Sửa link dạng BB Code thành dạng HTML 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>
]]>
/hvaonline/posts/list/36922.html#226979 /hvaonline/posts/list/36922.html#226979 GMT
Sửa link dạng BB Code thành dạng HTML 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>  
]]>
/hvaonline/posts/list/36922.html#226986 /hvaonline/posts/list/36922.html#226986 GMT
Sửa link dạng BB Code thành dạng HTML 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.]]>
/hvaonline/posts/list/36922.html#226987 /hvaonline/posts/list/36922.html#226987 GMT
Sửa link dạng BB Code thành dạng HTML

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]]>
/hvaonline/posts/list/36922.html#226991 /hvaonline/posts/list/36922.html#226991 GMT
Sửa link dạng BB Code thành dạng HTML

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.]]>
/hvaonline/posts/list/36922.html#227002 /hvaonline/posts/list/36922.html#227002 GMT
Sửa link dạng BB Code thành dạng HTML

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 :D Code:
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
http://regexlib.com/Search.aspx?k=URL ]]>
/hvaonline/posts/list/36922.html#227003 /hvaonline/posts/list/36922.html#227003 GMT
Sửa link dạng BB Code thành dạng HTML

WinDak wrote:
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)  
Mình nói cách của secmask mà, bạn không đọc kỹ à. Trên máy bạn, thử với \w có match không? Code:
$ sed 's/\[url="\?\([\w:\/\.#]*\)"\?\]\(.*\)\[\/url\]/<a href="\1" target="_blank">\2<\/a>/' input 
[url="/hvaonline/posts/list/136.html"]GRUB[/url]
[url=/hvaonline/posts/list/136.html]GRUB[/url]
Code:
$ sed 's/\[url="\?\([[:alnum:]:\/\.#]*\)"\?\]\(.*\)\[\/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>
]]>
/hvaonline/posts/list/36922.html#227007 /hvaonline/posts/list/36922.html#227007 GMT
Sửa link dạng BB Code thành dạng HTML /hvaonline/posts/list/36922.html#227010 /hvaonline/posts/list/36922.html#227010 GMT Sửa link dạng BB Code thành dạng HTML Code:
> cat input
[url="/hvaonline/posts/list/136.html"]Sử dụng GRUB[/url]
[url=/hvaonline/posts/list/136.html]Sử dụng GRUB[/url]
> cat input | while read STRING; do LINK=$(echo $STRING | cut -d']' -f1 | cut -d= -f2 | tr -d '"'); CONTENT=$(echo $STRING | cut -d'[' -f2 | cut -d']' -f2); echo "<a href=\"$LINK\" target=\"_blank\">$CONTENT</a>"; done
<a href="/hvaonline/posts/list/136.html" target="_blank">Sử dụng GRUB</a>
<a href="/hvaonline/posts/list/136.html" target="_blank">Sử dụng GRUB</a>
]]>
/hvaonline/posts/list/36922.html#227087 /hvaonline/posts/list/36922.html#227087 GMT