菜单切换
FACESOHO知行者
心灵
记录
远方
赞赏工具
源代码:
点击运行
保存
<?php header("Content-type: text/html; charset=utf-8"); /* */ function _sortDesc($a, $b) { return (strlen($a[0]) < strlen($b[0])) ? 1 : -1; } $linkMap = array( array("段子手","/punster/index.html"), array("段子","/punster/index.html"), ); $str =" 这儿是段子的链接。<br /> 这儿是中国段子大观的链接。<br /> 这儿是<a href='/punster/index.html'>段子</a>的现有链接。<br /> 这儿是<a href='/punster/index.html'>中国段子大观</a>的现有链接。<br /> "; //把原有的链接替换成文字 foreach($linkMap as $row) { $str = preg_replace('/(<a.*?>\s*)('.$row[0].')(\s*<\/a>)/sui', $row[0], $str); } //关键字从长至短排序 usort($linkMap, '_sortDesc'); //print_r($linkMap); exit; $tmpKwds = array(); //存放暂时被替换的子关键字 $cout = count($linkMap); foreach($linkMap as $i=>$row) { list($kwd, $url) = $row; for($j=$i+1; $j<$cout; $j++) { $subKwd = $linkMap[$j][0]; //如果包含其他关键字 暂时替换成其他字符串 如 茶叶 变成 if(strpos($kwd, $subKwd) !== false) { $tmpKwd = '_mg_'; $kwd = str_replace($subKwd, $tmpKwd, $kwd); $tmpKwds[$tmpKwd] = $subKwd; } } //把文字替换成链接 $str = preg_replace('/('.$row[0].')/sui', '<a href="'.$row[1].'">'.$kwd.'</a>', $str, -1); // 所有的匹配项都会被替换 } //把代替子关键字的字符串替换回来 foreach($tmpKwds as $tmp=>$kwd) { $str = str_replace($tmp, $kwd, $str); } echo $str; ?>
运行结果