加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP 网站SEO及过滤类的简单示例

发布时间:2020-05-25 23:45:58 所属栏目:PHP 来源:互联网
导读:PHP 网站SEO及过滤类的简单示例

感兴趣的小伙伴,下面一起跟随脚本之家 jb51.cc的小编来看看吧。
经测试代码如下:


/**
 * 网站SEO及过滤类
 *
 * @param 
 * @author 脚本之家 jb51.cc jb51.cc
 **/
class SEOTools
{
    public function friendlyURL($string,$replacement = '-') {
        $map = array(
            '/à|á|å|â|ä/' => 'a','/è|é|ê||ë/' => 'e','/ì|í|î/' => 'i','/ò|ó|ô|ø/' => 'o','/ù|ú||û/' => 'u','/ç|/' => 'c','/ñ|ň/' => 'n','//' => 'l','/ý/' => 'y','//' => 't','//' => 'z','/š/' => 's','/æ/' => 'ae','/ö/' => 'oe','/ü/' => 'ue','/Ä/' => 'Ae','/Ü/' => 'Ue','/Ö/' => 'Oe','/ß/' => 'ss','/ /'=>' ','/ /'=>'','/~|·|!|@|#|¥|%|…|&|×|(|)|-|+|=|『|【|』|】|、|:|;|“|”|'|《|,|》|。|?|/|—|_|:|√|<|°|丶|>|-|★|||│|‖|ˇ/'=>' ','/[^wsx80-xff]/' => ' ','/s+/' => $replacement
        );
        $string = trim($string);
        $string = preg_replace(array_keys($map),array_values($map),$string);
        $string = preg_replace('/s+/',$replacement,strtolower($string));
        $string = trim($string,$replacement);
        return $string;
    }
    
    //判断email
 public function isEmail($mailAddr)
 {
  return strlen($mailAddr) > 6 && preg_match("/^[w-.]+@[w-]+(.w+)+$/",$mailAddr);
 }
    //过滤用户
    public function CheckUser($string,$replacement = '_')
    {
        $map = array(
            '/à|á|å|â|ä/' => 'a',$replacement);
        return $string;
    }
    
    public function mktitle($string,'/[^ws^.x80-xff]/' => ' ',$replacement);
        return $string;
    }
    
 // 全角替换成半角
    public function Qj2bj($string)
    {
  $qj2bj = array(
         '1' => '1','2' => '2','3' => '3','4' => '4','5' => '5','6' => '6','7' => '7','8' => '8','9' => '9','0' => '0','a' => 'a','b' => 'b','c' => 'c','d' => 'd','e' => 'e','f' => 'f','g' => 'g','h' => 'h','i' => 'i','j' => 'j','k' => 'k','l' => 'l','m' => 'm','n' => 'n','o' => 'o','p' => 'p','q' => 'q','r' => 'r','s' => 's','t' => 't','u' => 'u','v' => 'v','w' => 'w','x' => 'x','y' => 'y','z' => 'z','A' => 'A','B' => 'B','C' => 'C','D' => 'D','E' => 'E','F' => 'F','G' => 'G','H' => 'H','I' => 'I','J' => 'J','K' => 'K','L' => 'L','M' => 'M','N' => 'N','O' => 'O','P' => 'P','Q' => 'Q','R' => 'R','S' => 'S','T' => 'T','U' => 'U','V' => 'V','W' => 'W','X' => 'X','Y' => 'Y','Z' => 'Z',' ' => ' '
     );
     return strtr($string,$qj2bj);
    }
    
    public function DelNbsp($string)
    {
        $map = array(
         '/ /'=>' ','/?/'=>' ',);
        $string = preg_replace(array_keys($map),$string);
     $string = preg_replace('/s+/','',$string);
     return $string;
    }
    public function getZipcode($str)
    {
     $pattern = "/[0-9]{1}(d+){4,5}/";
     preg_match_all($pattern,$str,$zipcodeArr); 
     if(empty($zipcodeArr[0]))
  {
   return '';
  }
  else {
   return $zipcodeArr[0][0];
  }
    
    }
    public function checkZipcode($str)
    {
     $strwidth=strlen($str);
     $zipcode=$str;
     switch($strwidth)
     {
      case 4:$zipcode="00".$str;break;
      case 5:$zipcode="0".$str;break;
      case 6:$zipcode=$str;break;
      default:$zipcode="";break;
     }
     return $zipcode;
    }
    
 public function getEmail($str) { 
  $pattern = "/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/i"; 
  preg_match_all($pattern,$emailArr); 
  if(empty($emailArr[0]))
  {
   return '';
  }
  else {
   $email_str=implode(",",$emailArr[0]);
   return $email_str;
  }
 } 
 public function getUrl($str)
 {
  $pattern = "/(http://|https://|ftp://)?([w:/.?=&-_]+)/is"; 
  preg_match_all($pattern,$urlArr);
  if(empty($urlArr[0]))
  {
   return '';
  }
  else {
   $url_str=implode(",$urlArr[0]);
   $url_str=preg_replace('/(http://|https://|ftp://)/',$url_str);
   return $url_str;
  }
  
 }
 public function match_links($document) {  
 $match=array();  
    preg_match_all("'<s*as.*?hrefs*=s*(["'])?(?(1)(.*?)1|([^s>]+))[^>]*>?(.*?)</a>'isx",$document,$links);                        
    while(list($key,$val) = each($links[2])) {
        if(!empty($val))
            $match['link'][] = $val;
    }
    while(list($key,$val) = each($links[3])) {
        if(!empty($val))
            $match['link'][] = $val;
    }        
    while(list($key,$val) = each($links[4])) {
        if(!empty($val))
            $match['content'][] = $val;
    }
    while(list($key,$val) = each($links[0])) {
        if(!empty($val))
            $match['all'][] = $val;
    }                
    return $match;
 }
    public function DelNoStr($string)
    {
        $map = array(
            '/à|á|å|â|ä/' => 'a','/~|·|!|@|#|¥|%|…|&|×|(|)|-|+|=|『|【|』|】|、|:|;|“|”|’|《|,|》|。|?|/|—|_|‘|:|√|<|°|丶|ˇ/'=>' ',// '/s+/' => $replacement
        );
        $string = trim($string);
        $string = preg_replace(array_keys($map),$string);
        $string = trim($string,'');
        return $string;
    }
    public function UrlToStr($string,$find = '/-/')
    { 
        $string = preg_replace($find," ",strtolower($string));
        $string = trim($string);
        return $string;
    }
    
    public function GetPyLetter($str)
    {
     return substr(pinyin($str,$ucfirst=true),1);
    }
    public function GetPinYin($str)
    {
     return strtolower(pinyin($str,$ucfirst=true));
    }
 
 public function DelCode($str)
    {
     
  $search = array("'<script[^>]*?>.*?</script>'si",// strip out javascript
      "'<[/!]*?[^<>]*?>'si",// strip out html tags
      "'([rn])[s]+'",// strip out white space
      "'&(quot|#34|#034|#x22);'i",// replace html entities
      "'&(amp|#38|#038|#x26);'i",// added hexadecimal values
      "'&(lt|#60|#060|#x3c);'i","'&(gt|#62|#062|#x3e);'i","'&(nbsp|#160|#xa0);'i","'&(iexcl|#161);'i","'&(cent|#162);'i","'&(pound|#163);'i","'&(copy|#169);'i","'&(reg|#174);'i","'&(deg|#176);'i","'&(#39|#039|#x27);'","'&(euro|#8364);'i",// europe
      "'&a(uml|UML);'",// german
      "'&o(uml|UML);'","'&u(uml|UML);'","'&A(uml|UML);'","'&O(uml|UML);'","'&U(uml|UML);'","'&szlig;'i",);
  $replace = array("","","1",""","&","<",">",chr(161),chr(162),chr(163),chr(169),chr(174),chr(176),chr(39),chr(128),"?",);
  $str = preg_replace($search,$replace,$str);
  return trim($str);
    }
    
 
 public function CutStr($sourcestr,$cutlength)
 {
    $returnstr='';
    $i=0;
    $n=0;
    $sourcestr=rtrim(SEOTools::DelCode($sourcestr));
    $str_length=strlen($sourcestr);//字符串的字节数
  while (($n<$cutlength) and ($i<=$str_length))
  {
       $temp_str=substr($sourcestr,$i,1);
       $ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
       if ($ascnum>=224)    //如果ASCII位高与224,
       {
   $returnstr=$returnstr.substr($sourcestr,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符       
          $i=$i+3;            //实际Byte计为3
          $n++;            //字串长度计1
       }
       elseif ($ascnum>=192) //如果ASCII位高与192,
       {
          $returnstr=$returnstr.substr($sourcestr,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
          $i=$i+2;            //实际Byte计为2
          $n++;            //字串长度计1
       }
       elseif ($ascnum>=65 && $ascnum<=90) //如果是大写字母,
       {
          $returnstr=$returnstr.substr($sourcestr,1);
          $i=$i+1;            //实际的Byte数仍计1个
          $n++;            //但考虑整体美观,大写字母计成一个高位字符
       }
       else                //其他情况下,包括小写字母和半角标点符号,
       {
          $returnstr=$returnstr.substr($sourcestr,1);
          $i=$i+1;            //实际的Byte数计1个
          $n=$n+0.5;        //小写字母和半角标点等与半个高位字符宽...
       }
  }
  if ($str_length>$i){
   $returnstr = $returnstr . ".";//超过长度时在尾处加上省略号
  }
     return htmlspecialchars($returnstr);
 }
 
 public function CreateTagLink($tags_str)
 {
  $tags_array=explode(",$tags_str);
  $link_tpl="";
  foreach($tags_array as $v)
  {
   $tag=trim($v);
   $alias=SEOTools::friendlyURL($tag);
  // $link_tpl.='<a href="/s/'.urlencode($alias).'" title="'.$tag."">'.$tag.'</a>&nbsp;&nbsp;';
   $link_tpl.=$tag.'&nbsp;&nbsp;';
  }
  return $link_tpl;
 }
 
}
 

/**
 * 中文转拼类
 *
 * @author  Lukin <my@lukin.cn>
 * @date    2011-01-25 10:44
 */
class PinYin {
    // 码表
    private $fp  = null;
    private $dat = 'pinyin.dat';
    public function __construct(){
        $this->dat = dirname(__FILE__).'/'.$this->dat;
        if (is_file($this->dat)) {
            $this->fp = fopen($this->dat,'rb');
        }
    }
    /**
     * 转拼音
     *
     * @param string $str   汉字
     * @param bool $ucfirst 首字母大写
     * @param bool $polyphony 忽略多读音
     * @return string
     */
    public function encode($str,$ucfirst=true,$polyphony=true) {
        $ret = ''; $len = mb_strlen($str,'UTF-8');
        for ($i = 0; $i < $len; $i++) {
            $py = $this->pinyin(mb_substr($str,1,'UTF-8'));
            if ($ucfirst && strpos($py,',') !== false) {
                $pys = explode(',$py); 
                $ret.= implode(',array_map('ucfirst',($polyphony ? array_slice($pys,1) : $pys)));
            } else {
                $ret.= $ucfirst ? ucfirst($py) : $py;
              
            }
        }
        
        return $ret;
    }
    /**
     * 汉字转十进制
     *
     * @param string $word
     * @return number
     */
    private function char2dec($word) {
        $bins  = '';
        $chars = str_split($word);
        foreach($chars as $char) $bins.= decbin(ord($char));
        $bins = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3',$bins);
        return bindec($bins);
    }
    /**
     * 单个字转拼音
     *
     * @param string $char  汉字
     * @return string
     */
    public function pinyin($char){
        if (strlen($char) == 3 && $this->fp) {
            $offset = $this->char2dec($char);
            // 判断 off 值
            if ($offset >= 0) {
                fseek($this->fp,($offset - 19968) << 4,SEEK_SET);
                return trim(fread($this->fp,16));
            }
        }
        return $char;
    }
    public function __destruct() {
        if ($this->fp) {
            fclose($this->fp);
        }
    }
}
/**
 * 取得实例
 *
 * @return $pinyin
 */
function &_pinyin_get_object() {
    static $pinyin;
 if ( is_null($pinyin) )
  $pinyin = new PinYin();
 return $pinyin;
}
if (!function_exists('pinyin')) :
/**
 * 取得拼音
 *
 * @param string $str
 * @param bool $ucfirst 首字母大写
 * @return string
 */
function pinyin($str,$ucfirst=true) {
    $py = _pinyin_get_object();
    return $py->encode($str,$ucfirst);
}
endif;


/***   代码来自脚本之家 jb51.cc(jb51.cc)   ***/

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读