不知道怎么解决问题是很痛苦的....
算一个小小的二次开发.只牵涉到一个函数...也知道有点难为大家.虽然只涉及一个函数.但要讲明问题.却不能用简短语言能够解决问题....涉及php程序 : 帝国ecms ( www.phome.net )
函数所在位置 : 程序源码 " \e\class\function.php "相关具体我把他放进网盘里面.如果在这里贴出来会影响可读性 : http://t.cn/zW24WlZ问题1 : //替换关键字原始函数 : 
//替换关键字
function ReplaceKey($newstext){
global $empire,$dbtbpre,$public_r;
if(empty($newstext))
{return $newstext;}
$sql=$empire->query("select keyname,keyurl from {$dbtbpre}enewskey");
while($r=$empire->fetch($sql))
{
$newstext=empty($public_r[repkeynum])?str_replace($r[keyname],'<a href='.$r[keyurl].' target=_blank class=infotextkey>'.$r[keyname].'</a>',$newstext):preg_replace('/'.$r[keyname].'/','<a href='.$r[keyurl].' target=_blank class=infotextkey>'.$r[keyname].'</a>',$newstext,$public_r[repkeynum]);
}
return $newstext;
}原始函数有个问题.替换的关键字是按 "短" >> "长" 替换... 而我希望的是 由 "长" 到 "短" 控制...
比如 :关键词 "中国" ,"中国人" ,"中国长城"在内容为:
【中国长城真的好长啊,中国人都喜欢去,中国真美丽】在原始函数下,设置了关键词只替换一次功能后
【<a href='xx'>中国</a>长城真的好长啊,<a href='xx'>中国人</a>都喜欢去,中国真美丽】 // Tag的String从 "短" 到 "长" 替换而我想【实现的功能】是 关键词倒排序替换... 需要提到一点是"替换过的文本" 不要在参加 替换 过程..
【<a href='xx'>中国长城</a>真的好长啊,<a href='xx'>中国人</a>都喜欢去,<a href='xx'>中国</a>真美丽】   // 由Tag的String从 "长" 到 "短" 替换
     
于是我就自己写了函数,但是发现问题得不到解决...
//替换关键字
function ReplaceKey($newstext){
global $empire,$dbtbpre,$public_r;
if(empty($newstext))
{return $newstext;}
$sql=$empire->query("select keyname,keyurl from {$dbtbpre}enewskey order by char_length(keyname) desc");
$i = 1;
while($r=$empire->fetch($sql))
{
 if($i==1){
$newstext = preg_replace('/'.$r[keyname].'/u','<a href=\''.$r[keyurl].'\' target=\'_blank\' >'.$r[keyname].'</a>',$newstext,$public_r[repkeynum]);
}else{
$newstext = preg_replace('/[^=>]'.$r[keyname].'/u','<a href=\''.$r[keyurl].'\' target=\'_blank\' >'.$r[keyname].'</a>',$newstext,$public_r[repkeynum]);

$i++;
}
 return $newstext;
}问题2 : 
加入一个判断.如果满足替换n次操作.就直接跳出替换.