php文章内容制作锚文本链接
<?php
$str = "中国发展确实受益于全球化,但中国也推动着全球化,让全球受益于中国经济的发展。出现反全球化的声音,有一点是别人感到我们受益更多;还有一点,是很多西方企业没有意识到中国企业有这么快的学习能力和提升能力,短期变成了他们的竞争者。中国加入WTO后的实际发展过程,确实超出一些西方国家和中国自己的预测,比如当时加入WTO,我们预测包括金融领域在内的很多领域会受到巨大冲击,但加入WTO之后,中国企业反而是脱颖而出的。";
$arr = array(
array(
'id' => '1',
'name' => '中国发展确实受益于全球化',
'url' => 'http://www.baiu.com'
),
array(
'id' => '2',
'name' => '全球化',
'url' => 'http://www.hao123.com'
),
array(
'id' => '3',
'name' => '中国经济',
'url' => 'http://www.163.com'
)
);
echo '<pre>';
echo $str . '<br/>';
$rs = deal_str($str, $arr);
print_r($rs);
function deal_str($str, $arr)
{
$newArr = array();
foreach ($arr as $k=>$v) {
$arr[$k]['length'] = abslength($v['name']);
}
$newArr = array_sort($arr);
$array = array($str);
foreach ($newArr as $vo) {
$res = preg_replace('/' . $vo['name'] . '/', '|||' . $vo['id'] . '|||', $array[0], 1);
if($res !== null){
$array[0] = $res;
}
}
foreach ($newArr as $vo) {
$array[0] = str_replace('|||' . $vo['id'] . '|||', '<a href="'.$vo['url'].'">' . $vo['name'] . '</a>', $array[0]);
}
return $array[0];
}
/**
* 二維数组排序
*/
function array_sort($arr)
{
$sort = array(
'direction' => 'SORT_DESC', //排序顺序标志 SORT_DESC 降序;SORT_ASC 升序
'field' => 'length', //排序字段
);
$arrSort = array();
foreach($arr AS $uniqid => $row){
foreach($row AS $key=>$value){
$arrSort[$key][$uniqid] = $value;
}
}
if($sort['direction']){
array_multisort($arrSort[$sort['field']], constant($sort['direction']), $arr);
}
return $arr;
}
/**
* 可以统计中文字符串长度的函数
* @param $str 要计算长度的字符串
* @param $type 计算长度类型,0(默认)表示一个中文算一个字符,1表示一个中文算两个字符
*/
function abslength($str)
{
if(empty($str)){
return 0;
}
if(function_exists('mb_strlen')){
return mb_strlen($str,'utf-8');
}
else {
preg_match_all("/./u", $str, $ar);
return count($ar[0]);
}
}
?>