HTML关键词替换问题

bighead 2007-12-10 08:01:25
一个比较复杂的问题(对我来说).

用户提交一段HTML文字,我想把其中的关键词替换成链接,比如"CSDN是个好论坛",替换成"<a href="....">CSDN</a>是个好论坛".

但是有两个问题.

1,现在关键词比较少,我把它们放在一个List<string>里,然后一个一个查找替换.但是如果有成千上万个关键词,读到内存里就太多了,而且替换起来消耗的时间也比较可怕.能不能直接在数据库里操作?(SQL SERVER2000)

2,因为用户提交的是HTML,如果内容是"<a href="...">CSDN论坛</a>是个好论坛",再用简单地查找替换就乱套了.

请帮忙看看怎么解决?给个思路也行.
...全文
389 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxq73061 2011-05-01
  • 打赏
  • 举报
回复
$keywords = str_replace('/','\/',$_SESSION['keywords']);
$keywords = trim($keywords);
$keywords = str_replace('<','<',$keywords);
$keywords = str_replace('>','>',$keywords);

$news->content = preg_replace(
"/(<[^>]+>|^)([^<]+)(<)?/e",
"replace_html_keyword('$keywords','$1','$2','$3')",$news->content );
lxq73061 2011-05-01
  • 打赏
  • 举报
回复

function replace_html_keyword($keyword,$a,$str,$b){
$keyword2 = '<strong style="color:#FF0000; background:#FFCC00">'.$keyword.'</strong>';
$str = preg_replace("/$keyword/is",$keyword2,$str);
$result = $a.$str.$b;
//&<strong style="color:#FF0000; background:#FFCC00">a</strong>mp; 转义一些HTML实体
$result = preg_replace("@&(\w{0,6})?({$keyword2})(\w{0,6})?;@","&$1$keyword$3;",$result);
return $result;

}
bighead 2007-12-26
  • 打赏
  • 举报
回复
这个功能太复杂,为了不浪费时间,就不实现这个功能了.

现在的办法是在文章前面加上文中有的关键词.查找一下就行了.
Jeremiah 2007-12-12
  • 打赏
  • 举报
回复
思路就是,已经替换了就不用再替换一次了...


http://www.l78zw.com/read.php/17.htm
hy_lihuan 2007-12-12
  • 打赏
  • 举报
回复
个人感觉性能不会很高,所以一般都在客户端完成;
阿非 2007-12-12
  • 打赏
  • 举报
回复
up
honey52570 2007-12-11
  • 打赏
  • 举报
回复
O_O
neituib 2007-12-11
  • 打赏
  • 举报
回复
找更适合的工作,内部推荐更容易成!

内推网 内部推荐 求职快线
junsgo 2007-12-11
  • 打赏
  • 举报
回复
顶一下.个人觉得正则比较好用.
benben5721 2007-12-10
  • 打赏
  • 举报
回复
继续顶啊.
zhao_yong 2007-12-10
  • 打赏
  • 举报
回复
關注,幫頂!
lwl0376 2007-12-10
  • 打赏
  • 举报
回复
路过帮顶
txgaozhao 2007-12-10
  • 打赏
  • 举报
回复
学习了
yangzhou710 2007-12-10
  • 打赏
  • 举报
回复
觉得你这们很消耗性能。。。
就直接在输入的时候就进行编码。。 输出来的时候在进行转码。。
server.HtmlEncode(String a) 进行编码。。。

server.HtmlDecode(String a) 进行解码。。。。
luyuanzhiwindows 2007-12-10
  • 打赏
  • 举报
回复
up
cat_hsfz 2007-12-10
  • 打赏
  • 举报
回复
通常的做法是到了客户端再作替换,把压力转嫁给客户端。
suyiming 2007-12-10
  • 打赏
  • 举报
回复
又是这个 我闪
xierfly 2007-12-10
  • 打赏
  • 举报
回复
不会,帮顶,啥也不说。
LikeCode 2007-12-10
  • 打赏
  • 举报
回复
对是复杂文本要用到正则,否则我手头上有个现成的代码,但只是单纯查找文本。
正则了解太少,偶不敢乱发言,偶闪~
winner2050 2007-12-10
  • 打赏
  • 举报
回复
这种文章很令人讨厌的。
加载更多回复(1)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧