一个比较复杂的问题(对我来说).用户提交一段HTML文字,我想把其中的关键词替换成链接,比如"CSDN是个好论坛",替换成"<a href="....">CSDN</a>是个好论坛".但是有两个问题.1,现在关键词比较少,我把它们放在一个List<string>里,然后一个一个查找替换.但是如果有成千上万个关键词,读到内存里就太多了,而且替换起来消耗的时间也比较可怕.能不能直接在数据库里操作?(SQL SERVER2000)2,因为用户提交的是HTML,如果内容是"<a href="...">CSDN论坛</a>是个好论坛",再用简单地查找替换就乱套了.请帮忙看看怎么解决?给个思路也行.
2、当用户提交时HtmlEncode进行解码格式,再替换。
就直接在输入的时候就进行编码。。 输出来的时候在进行转码。。
server.HtmlEncode(String a) 进行编码server.HtmlDecode(String a) 进行解码。
http://www.l78zw.com/read.php/17.htm
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;}
$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 );