如何生成类似于Google使用PHP和MySQL生成的代码段? [英] How to generate the snippet like those generated by Google with PHP and MySQL?

查看:61
本文介绍了如何生成类似于Google使用PHP和MySQL生成的代码段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如,它仅返回搜索关键字所在的代码段.

For example, it just returns the snippet around which the searching keyword exists.

部分文字被替换为"...".

And part of the text is replaced by "...".

使用PHP和MySQL是否可以实现该目标?

Is it possible to achieve that goal with PHP and MySQL?

推荐答案

略微修改了deceze的功能,以允许使用多个短语.例如您的短语可以是"testa testb",如果找不到testa,它将进入testb.

Modified deceze's function slightly to allow multiple phrases. e.g. your phrase can be "testa testb" and if it does not find testa, then it will go to testb.

function excerpt($text, $phrase, $radius = 100, $ending = "...") { 


         $phraseLen = strlen($phrase); 
       if ($radius < $phraseLen) { 
             $radius = $phraseLen; 
         } 

         $phrases = explode (' ',$phrase);

         foreach ($phrases as $phrase) {
             $pos = strpos(strtolower($text), strtolower($phrase)); 
             if ($pos > -1) break;
         }

         $startPos = 0; 
         if ($pos > $radius) { 
             $startPos = $pos - $radius; 
         } 

         $textLen = strlen($text); 

         $endPos = $pos + $phraseLen + $radius; 
         if ($endPos >= $textLen) { 
             $endPos = $textLen; 
         } 

         $excerpt = substr($text, $startPos, $endPos - $startPos); 
         if ($startPos != 0) { 
             $excerpt = substr_replace($excerpt, $ending, 0, $phraseLen); 
         } 

         if ($endPos != $textLen) { 
             $excerpt = substr_replace($excerpt, $ending, -$phraseLen); 
         } 

         return $excerpt; 
   } 

突出显示功能

function highlight($c,$q){ 
$q=explode(' ',str_replace(array('','\\','+','*','?','[','^',']','$','(',')','{','}','=','!','<','>','|',':','#','-','_'),'',$q));
for($i=0;$i<sizeOf($q);$i++) 
    $c=preg_replace("/($q[$i])(?![^<]*>)/i","<span class=\"highlight\">\${1}</span>",$c);
return $c;}

这篇关于如何生成类似于Google使用PHP和MySQL生成的代码段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆