regexp改进一下吧,前面那个贴子可以删了。
用lookahead匹配&符号但是不匹配 之类的。
【 在 atppp (Big Mouse) 的大作中提到: 】
受人之托,重发~~~
bbs2www/html/bbs.js 末尾加上
var urlmatch = new RegExp("((?:http|https|ftp|mms|rtsp)://(&(?=amp;)|[A-Za-z0-9\./=\?%_~@#:;\+\-])+)", "ig");
function prints(str) {
document.write(
str.replace(urlmatch, "<a target=\"_blank\" href=\"$1\">$1</a>"));
}
改动 bbs2www/lib/bbslib.c,行号可能不准。
@@ -2327,11 +2327,11 @@ void output_ansi_javascript(char *buf, s
if (attachmatched > 0)
article_len = attachPos[0] - ATTACHMENT_SIZE;
- BUFFERED_OUTPUT(output, "prints('", 8);
+ BUFFERED_OUTPUT(output, "document.write('", 16);
for (i = 0; i < article_len; i++)
{
if (STATE_ISSET(ansi_state, STATE_NEW_LINE)) {
- BUFFERED_OUTPUT(output, "prints('", 8);
+ BUFFERED_OUTPUT(output, "document.write('", 16);
STATE_CLR(ansi_state, STATE_NEW_LINE);
if (i < (buflen - 1) && (buf[i] == ':' && buf[i + 1] == ' ')) {
STATE_SET(ansi_state, STATE_QUOTE_LINE);
后面还有一个document.write不过是写附件的,不能改的。
这样改了的话像link的东东就能点了。
Note: 如果文章输出不用javascript而还是用老的bbs_printansifile,可以参考wForum
的disparticle.php和inc/ubbcode.php修改,不过那样的话替换在服务器端进行,会增加
load。wForum不能认出url里面的&,可以按照前面那个改进一下。
--