PHP 关键词替换出现乱码

zl2727 2013-12-18 05:17:31
function ReplaceKeyword($kw,&$body)
{
global $cfg_cmspath;
$maxkey = 5;
$kws = explode(",",trim($kw)); //以分好为间隔符
$i=0;
$karr = $kaarr = $GLOBALS['replaced'] = array();

//暂时屏蔽超链接
$body = preg_replace("#(<a(.*))(>)(.*)(<)(\/a>)#isU", '\\1-]-\\4-[-\\6', $body);

$query ="select * from #@__arctype where isbaike=1";
$this->dsql->Execute("bkarry",$query);
while($row = $this->dsql->GetArray("bkarry"))
{
$key = trim($row['typename']);
$key_url=GetTypeUrl($row['id'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],
$row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);
$karr[] = $key;

$kaarr[] = "<a href='$key_url' class='cmsLink' $data target='_blank'>$key</a>";
}

// 这里可能会有错误
$body = @preg_replace("#(^|>)([^<]+)(?=<|$)#sUe", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body);

//恢复超链接
$body = preg_replace("#(<a(.*))-\]-(.*)-\[-(\/a>)#isU", '\\1>\\3<\\4', $body);
return $body;
}


}

//高亮专用, 替换多次是可能不能达到最多次
function _highlight($string, $words, $result, $pre)
{
global $cfg_replace_num;
$string = str_replace('\"', '"', $string);
uasort($words,create_function('$a, $b','return strlen($a)>strlen($b);'));
if($cfg_replace_num > 0)
{
foreach ($words as $key => $word)
{
if($GLOBALS['replaced'][$word] == 1)
{
continue;
}
$string = preg_replace("#".preg_quote($word)."#", $result[$key], $string, $cfg_replace_num);
if(strpos($string, $word) !== FALSE)
{
$GLOBALS['replaced'][$word] = 1;
}
}
}
else
{
$string = str_replace($words, $result, $string);
}
return $pre.$string;
}
...全文
124 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zl2727 2013-12-20
  • 打赏
  • 举报
回复
这会把 孩子 替换成 虾

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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