php自动给文章加关键词链接的函数代码

代码如下:

<?php
$link = array(
'百度,http://www.baidu.com/',
'服务器软件,http://s.jb51.net/',
'我们,http://www.jb51.net/',
);
$str = '在百度中搜索服务器软件就可以到我们提供的软件<br />
夏季不再穿长筒袜近年成为一种时尚,甚至到了秋天也不例外。<br />
专家提出,其实这种时尚不利于美腿。据悉,久坐久站缺少运动等原因易导致静脉曲张,尤其是长期站立工作的人,容易引起下肢静脉本身扩张、延长或静脉瓣膜损坏以至发病。具体表现为腿部肿胀,下肢静脉犹如蚯蚓状弯曲或结节成团,皮肤发紫,特别是踝和小腿内侧更为严重。<br />
专家指出,长期站立工作的人或多或少都有一些下肢静脉曲张的表现,只是轻重程度不一样。下肢静脉曲张是一种治疗起来比较麻烦的疾病,严重的需要手术,所以最好的方法还是防患于未然,在症状尚不明显的时候,就采取防范措施,穿长筒弹力袜就是一种很好的方法,可帮助血液进入较大且较深处的静脉。<br />
保持理想体重,可减少静脉曲张的机会;避免紧身衣物,穿医用弹力袜,以免使血液聚积在腿部;小心食用避孕药,某些避孕药可能引起这种问题。';
$out=keylink($str,$link,1); //$str 原始字符 $link,替换链接数组, 3替换次数
echo $out;
function _sortDesc($a, $b) {
return (strlen($a[0]) < strlen($b[0])) ? 1 : -1;
}
function keylink($str,$link,$count=1)
{
$linkDefs = $link;
$linkMap = array();
foreach($linkDefs as $row) {
$linkMap[] = explode(',', $row);
}

foreach($linkMap as $row) {
$str = preg_replace('/(<a.*?>\s*)('.$row[0].')(\s*<\/a>)/sui', '${2}', $str);
}

usort($linkMap, '_sortDesc');

$tmpKwds = array();

foreach($linkMap as $i=>$row) {
list($kwd, $url) = $row;
for($j=$i+1; $j<count($linkMap); $j++) {
$subKwd = $linkMap[$j][0];
//如果包含其他关键字,暂时替换成其他字符串
if(strpos($kwd, $subKwd) !== false) {
$tmpKwd = '{'.md5($subKwd).'}';
$kwd = str_replace($subKwd, $tmpKwd, $kwd);
$tmpKwds[$tmpKwd] = $subKwd;
}
}
//把文字替换成链接
$str = preg_replace('/('.$row[0].')/sui', '<a href="'.$row[1].'" target="_blank">'.$kwd.'</a>', $str, $count);
}

//把代替子关键字的字符串替换回来
foreach($tmpKwds as $tmp=>$kwd) {
$str = str_replace($tmp, $kwd, $str);
}
return $str;
}
?>

(0)

相关推荐

  • PHP检测链接是否存在的代码实例分享

    在PHP中,检查某个链接是否存在,有两个方法,一个是使用curl,另外一个是 获得HTTP的header的响应码,如果是200的则是OK,如果是404的话就找不到了,例子如下: 1) 使用get_headers:  <?php $url = "http://www.abc.com/demo.jpg"; $headers = @get_headers($url); if($headers[0] == 'HTTP/1.1 404 Not Found') { echo "UR

  • 使用php实现下载生成某链接快捷方式的解决方法

    复制代码 代码如下: <?php  $Shortcut = "[InternetShortcut]  URL=http://www.your_url.com/  IconFile=http://www.your_icon.com/  IconIndex=1  IDList=  [{000214A0-0000-0000-C000-000000000046}]  Prop3=19,2  ";  header("Content-type: application/octet-

  • PHP获取短链接跳转后的真实地址和响应头信息的方法

    获取到一个短连接,需要将短连接转换成真实的网址,通过查资料,发现 PHP 提供了一个函数 get_headers() ,可以完成这个任务,先把 头部信息获取到,然后再分析跳转地址即可: 复制代码 代码如下: $url = 'http://t.cn/h5mwx'; $headers = get_headers($url, TRUE); print_r($headers); //输出跳转到的网址 echo $headers['Location']; 附完整数组: 复制代码 代码如下: Array (

  • php 正则表达式提取网页超级链接url的函数

    复制代码 代码如下: function match_links($document) { preg_match_all("'<\s*a\s.*?href\s*=\s*([\"\'])?(?(1)(.*?)\\1|([^\s\>]+))[^>]*>?(.*?)</a>'isx",$document,$links); while(list($key,$val) = each($links[2])) { if(!empty($val)) $mat

  • 把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数

    这几天在写一个小程序的时候,需要用到正则表达式匹配用户输入文本中的URL地址,然后将URL地址替换成可以点击的链接.URL地址的匹配,我想这应该是大家在做验证处理中常会用到的,这里就把我整合的一个比较完整的表达式给出来: 复制代码 代码如下: var URL = /(https?:\/\/|ftps?:\/\/)?((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(:[0-9]+)?|(localhost)(:[0-9]+)?|([\w]+\.)(\S+)(\w{2,4}

  • php调用新浪短链接API的方法

    本文实例讲述了php调用新浪短链接API的方法.分享给大家供大家参考.具体方法如下: 复制代码 代码如下: <?php //Sina App_Key define('SINA_APPKEY', '31641035'); function curlQuery($url) {  //设置附加HTTP头  $addHead = array(  "Content-type: application/json"  );  //初始化curl,当然,你也可以用fsockopen代替  $cu

  • php中使用preg_replace函数匹配图片并加上链接的方法

    介绍:preg_replace 执行正则表达式的搜索和替换,如果只是单纯的匹配字符串建议使用str_replace(),因为其执行效率高的多.mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]) 在 subject 中搜索 pattern 模式的匹配项并替换为 replacement.如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有

  • php结合js实现点击超链接执行删除确认操作

    如题,本次是要实现点击超链接实现执行js代码,并确认是否删除数据库数据,采用php. 首先链接数据库,查询数据库数据: 复制代码 代码如下: <?php $dbms='mysql';                         //数据库类型 ,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数 $host='localhost';                     //数据库主机名 $dbName='db_database19';            //使用的数据

  • php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)

    需要提取的内容如下: 复制代码 代码如下: <a href="http://baidu.com">http://baidu.com</a>这是第一个A标签,<a href="http://blog.baidu.com">成长脚印-专注于互联网发展</a>这是第二个A标签.http://www.jb51.net这是第一个需要被提取的URL地址,http://blog.baidu.com这是第二个需要被提取的URL地址'.

  • php正则表达式取得内容所有链接的方法

    本文实例讲述了php正则表达式取得内容所有链接的方法.分享给大家供大家参考.具体如下: 这里提供二款关于php正则链接的方法,他们可以取得内容所有链接并且保存到一个数组,当然也可以把链接全部替换. 方法一,代码如下: 复制代码 代码如下: function get_all_url($code){          preg_match_all('/<as+href=["|']?([^>"' ]+)["|']?s*[^>]*>([^>]+)<

  • php 正则 过滤html 的超链接

    <?php echo preg_replace("/(?<=href=)([^\>]*)(?=\>)/i","#", "<a href='www.csdn.net'>你好,点这里看看</a><a href='www.jb51.net'>你好,点这里看看</a>"); ?> 正则:/(?<=href=)([^\>]*)(?=\>)/ (?<=exp

随机推荐