本文实例陈诉了PHP函数完结从一个文本字符串中领到关键字的不二等秘书诀。分享给我们供大家仿照效法。具体深入分析如下:

/**
  * 关键字套红方法
  * 
  * @access public
  * @param array $options 参数数组
  *  <li> $info_arr  array  内容</li>
  *  <li> $search_arr array  关键词数组 </li>
  * @return int or array
  */
  function set_arr_keyword_red($info_arr, $search_arr)
 {
  foreach ($search_arr as $search_str)
  {
   foreach ($info_arr as $key => $info)
   {
    if(in_array($key,array('item_title','keywords', 'photo_title', 'photo_site','content',)))
    {
     $info = strip_tags($info);
     $info = str_replace(' ', '', $info);
     $q_str_pos = stripos($info, $search_str);
     if (false!==$q_str_pos)
     {
      $info = csubstr($info, $q_str_pos+150);
      $temp = csubstr($info,$q_str_pos-150);
      $info = substr($info, strlen($temp), 300);
      $info = preg_replace("/{$search_str}/i", "<font color='red'>{$search_str}</font>", $info);

      if($info_arr['match_key']=='')
      $info_arr['match_key'] = $key;
     }
     else
     {
      $info = csubstr($info,300);
     }
    }
    $info_arr[$key] = $info;
   }
  }
  return $info_arr;
 }

$str = 'woloveu小君';
$info_arr = array('photo_title' => 'womejiojd我们都围殴防静低屁啊小君鸡冻啊泡脚盆大');
$search_arr = array('小君');
$ret = set_arr_keyword_red($info_arr, $search_arr);
dump($ret );

代码如下:

表明:在这么些小程序中,有一点点不足之处在于,只好同期搜寻多少个第一字,何况中间用空格”
“隔绝,假诺只是找出贰个生死攸关字,如:”大”

/**
 * Finds all of the keywords (words that appear most) on param $str 
 * and return them in order of most occurrences to less occurrences.
 * @param string $str The string to search for the keywords.
 * @param int $minWordLen[optional] The minimun length (number of chars) of a word to be considered a keyword.
 * @param int $minWordOccurrences[optional] The minimun number of times a word has to appear 
 * on param $str to be considered a keyword.
 * @param boolean $asArray[optional] Specifies if the function returns a string with the 
 * keywords separated by a comma ($asArray = false) or a keywords array ($asArray = true).
 * @return mixed A string with keywords separated with commas if param $asArray is true, 
 * an array with the keywords otherwise.
 */
function extract_keywords($str, $minWordLen = 3, $minWordOccurrences = 2, $asArray = false)
{
  function keyword_count_sort($first, $sec)
  {
    return $sec[1] - $first[1];
  }
  $str = preg_replace('/[^\\w0-9 ]/', ' ', $str);
  $str = trim(preg_replace('/\s+/', ' ', $str));
  $words = explode(' ', $str);
  $keywords = array();
  while(($c_word = array_shift($words)) !== null)
  {
    if(strlen($c_word) <= $minWordLen) continue;
    $c_word = strtolower($c_word);
    if(array_key_exists($c_word, $keywords)) $keywords[$c_word][1]++;
    else $keywords[$c_word] = array($c_word, 1);
  }
  usort($keywords, 'keyword_count_sort');
  $final_keywords = array();
  foreach($keywords as $keyword_det)
  {
    if($keyword_det[1] < $minWordOccurrences) break;
    array_push($final_keywords, $keyword_det[0]);
  }
  return $asArray ? $final_keywords : implode(', ', $final_keywords);
}
//How to use
//Basic lorem ipsum text to extract the keywords
$text = "
Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Curabitur eget ipsum ut lorem laoreet porta a non libero. 
Vivamus in tortor metus. Suspendisse potenti. Curabitur 
metus nisi, adipiscing eget placerat suscipit, suscipit 
vitae felis. Integer eu odio enim, sed dignissim lorem. 
In fringilla molestie justo, vitae varius risus lacinia ac. 
Nulla porttitor justo a lectus iaculis ut vestibulum magna 
egestas. Ut sed purus et nibh cursus fringilla at id purus.
";
//Echoes: lorem, suscipit, metus, fringilla, purus, justo, eget, vitae, ipsum, curabitur, adipiscing
echo extract_keywords($text);

你也许感兴趣的篇章:

  • ThinkPHP做文字水印时提示call an undefined function
    exif_imagetype()消除办法
  • PHP中创设图像并绘制文字的例证
  • php扶助汉语字符串分割的函数
  • PHP完毕过滤掉非汉字字符只保留汉语字符
  • php给图片Gavin字水印
  • php自动识别文字编码并转移为目的编码的措施
  • php面向对象与面向进程两种方法给图片添Gavin字水印
  • php给图片添Gavin字水印方法汇总
  • php图片增添文字水印完结代码
  • 编写制定PHP程序检查字符串中的中文字符个数的实例分享
<html>
<head>
  <script src="/DelphiRequest/search/js/jquery.js"></script>
  <script>
/*用原生js实现
//    function showResult(str)
//    {
//      if (str.length==0)
//      {
//        document.getElementById("livesearch").innerHTML="";
//        document.getElementById("livesearch").style.border="0px";
//        return;
//      }
//      if (window.XMLHttpRequest)
//      {// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行
//        xmlhttp=new XMLHttpRequest();
//      }
//      else
//      {// IE6, IE5 浏览器执行
//        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
//      }
//      xmlhttp.onreadystatechange=function()
//      {
//        if (xmlhttp.readyState==4 && xmlhttp.status==200)
//        {
//          document.getElementById("livesearch").innerHTML=xmlhttp.responseText;
//          document.getElementById("livesearch").style.border="1px solid #A5ACB2";
//        }
//      }
//      xmlhttp.open("GET","livesearch.php?q="+str,true);
//      xmlhttp.send();
//    }
*/
//用jquery实现
     function showResult(str){
       $.ajax({
         type: "GET",
         url : "livesearch.php",
         datatype : 'json',
         data: {'q':str} ,
         success :function (data) {
           document.getElementById("livesearch").innerHTML=data;
           document.getElementById("livesearch").style.border="1px solid #A5ACB2";
         }
       })
     }
  </script>
</head>
<body>
<form>
  <input type="text" size="30" onkeyup="showResult(this.value)">
  <div id="livesearch"></div>
</form>
</body>
</html>

图片 1

那是贰个函数定位接收三个字符串作为参数(连同其它陈设可选参数),並且定位该字符串中的全部器重字(现身最多的词),再次来到三个数组或贰个字符串由逗号分隔的要害字。成效平常办事,但自己正在改革,因而,感兴趣的朋友可以提议革新意见。

稍加时候大家在体现一篇作品的时候,大概供给把一些重要字张开套红,高亮显示,以便大家能便捷的探究和一定那些根本字,上边让大家看看具体落到实处的代码。

你或者感兴趣的稿子:

  • php+ajax做仿百度寻找下拉电动提醒框(有实例)
  • php
    搜索框提醒(自动达成)实例代码
  • jquery+php达成搜索框自动唤醒
  • 采纳PHP+JS达成找出自动唤醒(实例)
  • 谷歌(Google)音乐搜索栏的升迁效果php校勘代码
  • PHP 寻找查询作用达成
  • php站内搜索并高亮展现首要字的落实代码
  • PHP获取寻觅引擎关键字来源的函数(帮助百度和谷歌(Google)等搜寻引擎)
  • PHP写的获得各找出蜘蛛爬行记录代码
  • php使用正则表达式举办字符串搜索的格局

图片 2

期待本文所述对大家的php程序设计有所支持。

PHP代码如下:(PHP不只好够思量直接动用数组,也足以设想直接查询数据库,获取数据库内容,本代码使用的是数组。)

<?php 
include 'conn.php'; 
?> 
<table width=500 align="center"> 
  <form action="" method="get"> 
  <tr> 
   <td>关键字:<input type="text" name="keyWord" /> 
   <input type="submit" value="搜索" /></td> 
  </tr> 
  </form> 
 </table> 

 <table width=500 border="0" align="center" cellpadding="5" 
  cellspacing="1" bgcolor="#add3ef"> 
  <?php 
  //关键字不为空的时候才执行相关搜索 
  if($_GET['keyWord']){ 
  //用空格符把关键字分割开 
  $key=explode(' ', $_GET[keyWord]); 
  $sql="select * from message where title like '$key[0]' or title like '$key[1]' or content like '$key[0]' or content like '%$key[1]%'"; 
  $query=mysql_query($sql); 
  while ($row=mysql_fetch_array($query)){ 
   //替换关键字,并且把关键字高亮显示 
   $row[title]=preg_replace("/$key[0]/i", "<font color=red><b>$key[0]</b></font>", $row[title]); 
   $row[title]=preg_replace("/$key[0]/i", "<font color=red><b>$key[1]</b></font>", $row[title]); 
   $row[content]=preg_replace("/$key[0]/i", "<font color=red><b>$key[0]</b></font>", $row[content]); 
   $row[content]=preg_replace("/$key[1]/i", "<font color=red><b>$key[1]</b></font>", $row[content]); 
   ?> 

  <tr bgcolor="#eff3ff"> 
   <td>标题:<font color="black"><?=$row[title]?></font> 用户:<font color="black"><?=$row[user] ?></font> 
   <div align="right"><a href="preEdit.php?id=<?=$row[id]?>">编辑</a>  |  <a 
    href="delete.php?id=<?=$row[id]?>">删除</a></div> 
   </td> 
  </tr> 
  <tr bgColor="#ffffff"> 
   <td>内容:<?=$row[content]?></td> 
  </tr> 
  <tr bgColor="#ffffff"> 
   <td> 
   <div align="right">发表日期:<?=$row[lastdate]?></div> 
   </td> 
  </tr> 
  <?php } 
  } 
  ?> 
 </table> 

您大概感兴趣的篇章:

  • php站内搜寻并高亮突显主要字的贯彻代码
  • php 多种要字
    高亮展现完成代码
  • PHP中选用strpos函数完毕屏蔽敏感关键字作用
  • PHP完毕多种要字加亮功用

HTML代码:(该代码用三种方法完毕,一种Jquery,一种原生JS)

来得的时候会并发乱码 ……^|_|^,那是由于上边代码的结果: