$k=array("i","n");
$row="iphone";
$row = preg_replace("/($k[0])/i", "<font color=red><b>\\1</b></font>", $row);
$row = preg_replace("/($k[1])/i", "<font color=red><b>\\1</b></font>", $row);
echo $row;
//输出 nt color=red>int>phone
//怎么样才能让关键字也就是$k里面的字母变为红色的?不重复替换?
$p= join('',$k);
$row="iphone";
echo preg_replace("/[".$p."]/i", "<font color=red><b>\\0</b></font>", $row);
* 将关键词数组按长度排序
*/
function replaceKeywordsSub($v1,$v2){
if(is_string($v1)){
if(is_string($v2)){
return strlen($v1) < strlen($v2);
}elseif(is_array($v2)){
return strlen($v1) < strlen($v2['word']);
}
}elseif(is_array($v1)){
if(is_string($v2)){
return strlen($v1['word']) < strlen($v2);
}elseif(is_array($v2)){
return strlen($v1['word']) < strlen($v2['word']);
}
}
}
function replaceKeywords($aKey,$html){
if(!is_array($aKey) || count($aKey)==0)
return $html;
//替换掉所有的链接,以防止A标签的嵌套
if(preg_match_all('#<a[^>]+>.*</a>#iuU',$html,$matchs)){
list($tagLinks)=$matchs;
foreach($tagLinks as $link){
$html=str_replace($link,'/$link'.md5($link).'$/',$html);
}
print_r($matchs);
}
//替换掉所有其他标签
if(preg_match_all('#<[^>]+>#iuU',$html,$matchs)){
list($tags)=$matchs;
foreach($tags as $tag){
$html=str_replace($tag,'/$tag'.md5($tag).'$/',$html);
}
}
// 按照关键词长度对数组重新派讯
uasort($aKey,'replaceKeywordsSub');
foreach($aKey as $w){
if(is_string($w) && $w = strip_tags(trim($w)))
$html=preg_replace('/'.$w.'/','/*'.md5($w).'*/',$html,1);//只替换一次
elseif(is_array($w))
$html=preg_replace('/'.$w['word'].'/','/*'.md5($w['word']).'*/',$html,1);
}
foreach($aKey as $w){
if(is_string($w) && $w = strip_tags(trim($w))){
$r = "<a href=\"search.html?q=".rawurlencode($w)."\" target=\"_blank\" class=\"keyword_link\">{$w}</a>";
$html=str_replace('/*'.md5($w).'*/',$r,$html);
}elseif(is_array($w)){
if($w['url']=='')
$r = "<a href=\"search.html?q=".rawurlencode($w['word'])."\" target=\"_blank\" class=\"keyword_link\">{$w['word']}</a>";
else
$r = "<a href=\"{$w['url']}\" target=\"_blank\" class=\"keyword_link\">{$w['word']}</a>";
$html=str_replace('/*'.md5($w['word']).'*/',$r,$html);
}
}
//恢复所有标签,除A标签
if($tags){
foreach($tags as $tag){
$html=str_replace('/$tag'.md5($tag).'$/',$tag,$html);
}
}
//恢复A标签
if($tagLinks){
foreach($tagLinks as $link){
$html=str_replace('/$link'.md5($link).'$/',$link,$html);
}
}
return $html;
}
//用法如下:
$aKey = array(
array('word' => '中国','url' => 'http://www.gov.cn/'),
array('word' => '共和国'),
array('word' => '中华'),
array('word' => '人民'),
array('word' => '共和'),
array('word' => '中华人民共和国'),
);
$html = '中华人民共和国简称<a href="abc.php?中华人民共和国" title="中华人民共和国">中国</a>,位于欧亚大陆东部,太平洋西岸。中国具有五千年的文明史,是世界四大文明古国之一。中国是联合国安全理事会常任理事国;世界第二大经济体;世界第一大出口国,世界第二大进口国,拥有最多外汇储备;亦是世界上经济成长最快的国家之一。另外,中国拥有世界上现役士兵最多的军队,军事开支世界第二;拥有核武器,并具备发射卫星、载人航天器以及试验型空间站的能力。不过中国的生产力总体水平还比较低,地区发展不平衡;科学技术水平和民族文化素质等还不够高,这些亦为最基本的现实国情。';
echo replaceKeywords($aKey,$html);