热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分享一个PHP网站SEO及过滤类,方便使用-PHP源码

在给网站页面做SEO的时候,长用到得一些函数。比如:良好URL生成,用户名过滤,email检测,截取字符串,全角替换成半角,删除html等
在给网站页面做SEO的时候,长用到得一些函数。
比如:良好URL生成,用户名过滤,email检测,截取字符串,全角替换成半角,删除html等

1. [PHP]代码

 'a',
            '/è|é|ê|ẽ|ë/' => 'e',
            '/ì|í|î/' => 'i',
            '/ò|ó|ô|ø/' => 'o',
            '/ù|ú|ů|û/' => 'u',
            '/ç|č/' => 'c',
            '/ñ|ň/' => 'n',
            '/ľ/' => 'l',
            '/ý/' => 'y',
            '/ť/' => 't',
            '/ž/' => 'z',
            '/š/' => 's',
            '/æ/' => 'ae',
            '/ö/' => 'oe',
            '/ü/' => 'ue',
            '/Ä/' => 'Ae',
            '/Ü/' => 'Ue',
            '/Ö/' => 'Oe',
            '/ß/' => 'ss',
            '/ /'=>' ',
            '/ /'=>'',
       '/~|·|!|@|#|¥|%|…|&|×|(|)|-|\+|=|『|【|』|】|、|:|;|“|”|\'|
       《|,|》|。|?|\/|—|_|:|√|<|°|丶|>|-|★|||│|‖|ˇ/'=>' ',
            '/[^\w\s\x80-\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',
            '/è|é|ê|ẽ|ë/' => 'e',
            '/ì|í|î/' => 'i',
            '/ò|ó|ô|ø/' => 'o',
            '/ù|ú|ů|û/' => 'u',
            '/ç|č/' => 'c',
            '/ñ|ň/' => 'n',
            '/ľ/' => 'l',
            '/ý/' => 'y',
            '/ť/' => 't',
            '/ž/' => 'z',
            '/š/' => 's',
            '/æ/' => 'ae',
            '/ö/' => 'oe',
            '/ü/' => 'ue',
            '/Ä/' => 'Ae',
            '/Ü/' => 'Ue',
            '/Ö/' => 'Oe',
            '/ß/' => 'ss',
            '/ /'=>' ',
            '/ /'=>'',
            '/~|·|!|@|#|¥|%|…|&|×|(|)|-|\+|=|『|【|』|】|、|:|;|“|”|\'|《|,|》|。
            |?|\/|—|_|:|√|<|°|丶|>|-|★|||│|‖|ˇ/'=>' ',
            '/[^\w\s\x80-\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;
    }
     
    public function mktitle($string, $replacement = '_')
    {
        $map = array(
            '/à|á|å|â|ä/' => 'a',
            '/è|é|ê|ẽ|ë/' => 'e',
            '/ì|í|î/' => 'i',
            '/ò|ó|ô|ø/' => 'o',
            '/ù|ú|ů|û/' => 'u',
            '/ç|č/' => 'c',
            '/ñ|ň/' => 'n',
            '/ľ/' => 'l',
            '/ý/' => 'y',
            '/ť/' => 't',
            '/ž/' => 'z',
            '/š/' => 's',
            '/æ/' => 'ae',
            '/ö/' => 'oe',
            '/ü/' => 'ue',
            '/Ä/' => 'Ae',
            '/Ü/' => 'Ue',
            '/Ö/' => 'Oe',
            '/ß/' => 'ss',
            '/ /'=>' ',
            '/ /'=>'',
            '/~|·|!|@|#|¥|%|…|&|×|(|)|-|\+|=|『|【|』|】|、|:|;|“|”|\'|《|,|》|。
            |?|\/|—|_|:|√|<|°|丶|>|-|★|||│|‖|ˇ/'=>' ',
            '/[^\w\s^.\x80-\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;
    }
     
    // 全角替换成半角
    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), array_values($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,$str,$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,$str,$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("&#39;<\s*a\s.*?href\s*=\s*([\"\&#39;])?(?(1)(.*?)\\1|([^\s\>]+))[^>]*>?(.*?)
       &#39;isx",$document,$links);                        
       while(list($key,$val) = each($links[2])) {
           if(!empty($val))
               $match[&#39;link&#39;][] = $val;
       }
       while(list($key,$val) = each($links[3])) {
           if(!empty($val))
               $match[&#39;link&#39;][] = $val;
       }        
       while(list($key,$val) = each($links[4])) {
           if(!empty($val))
               $match[&#39;content&#39;][] = $val;
       }
       while(list($key,$val) = each($links[0])) {
           if(!empty($val))
               $match[&#39;all&#39;][] = $val;
       }                
       return $match;
    }
    public function DelNoStr($string)
    {
        $map = array(
            &#39;/à|á|å|â|ä/&#39; => &#39;a&#39;,
            &#39;/è|é|ê|ẽ|ë/&#39; => &#39;e&#39;,
            &#39;/ì|í|î/&#39; => &#39;i&#39;,
            &#39;/ò|ó|ô|ø/&#39; => &#39;o&#39;,
            &#39;/ù|ú|ů|û/&#39; => &#39;u&#39;,
            &#39;/ç|č/&#39; => &#39;c&#39;,
            &#39;/ñ|ň/&#39; => &#39;n&#39;,
            &#39;/ľ/&#39; => &#39;l&#39;,
            &#39;/ý/&#39; => &#39;y&#39;,
            &#39;/ť/&#39; => &#39;t&#39;,
            &#39;/ž/&#39; => &#39;z&#39;,
            &#39;/š/&#39; => &#39;s&#39;,
            &#39;/æ/&#39; => &#39;ae&#39;,
            &#39;/ö/&#39; => &#39;oe&#39;,
            &#39;/ü/&#39; => &#39;ue&#39;,
            &#39;/Ä/&#39; => &#39;Ae&#39;,
            &#39;/Ü/&#39; => &#39;Ue&#39;,
            &#39;/Ö/&#39; => &#39;Oe&#39;,
            &#39;/ß/&#39; => &#39;ss&#39;,
            &#39;/ /&#39;=>&#39; &#39;,
            &#39;/ /&#39;=>&#39;&#39;,
            &#39;/~|·|!|@|#|¥|%|…|&|×|(|)|-|\+|=|『|【|』|】|、|:|;|“|”|’|《|,|》|。
            |?|\/|—|_|‘|:|√|<|°|丶|ˇ/&#39;=>&#39; &#39;,
            &#39;/[^\w\s\x80-\xff]/&#39; => &#39; &#39;,
           // &#39;/\\s+/&#39; => $replacement
        );
        $string = trim($string);
        $string = preg_replace(array_keys($map), array_values($map), $string);
        $string = preg_replace(&#39;/\\s+/&#39;,&#39;&#39;,$string);
        $string = trim($string,&#39;&#39;);
        return $string;
    }
    public function UrlToStr($string, $find = &#39;/-/&#39;)
    {   
        $string = preg_replace($find," ", strtolower($string));
        $string = trim($string);
        return $string;
    }
     
    public function GetPyLetter($str)
    {
        return substr(pinyin($str, $ucfirst=true), 0,1);
    }
    public function GetPinYin($str)
    {
        return strtolower(pinyin($str, $ucfirst=true));
    }
     
    public function DelCode($str)
    {
         
        $search = array("&#39;&#39;si",    // strip out Javascript
                        "&#39;<[\/\!]*?[^<>]*?>&#39;si",            // strip out html tags
                        "&#39;([\r\n])[\s]+&#39;",                  // strip out white space
                        "&#39;&(quot|#34|#034|#x22);&#39;i",        // replace html entities
                        "&#39;&(amp|#38|#038|#x26);&#39;i",         // added hexadecimal values
                        "&#39;&(lt|#60|#060|#x3c);&#39;i",
                        "&#39;&(gt|#62|#062|#x3e);&#39;i",
                        "&#39;&(nbsp|#160|#xa0);&#39;i",
                        "&#39;&(iexcl|#161);&#39;i",
                        "&#39;&(cent|#162);&#39;i",
                        "&#39;&(pound|#163);&#39;i",
                        "&#39;&(copy|#169);&#39;i",
                        "&#39;&(reg|#174);&#39;i",
                        "&#39;&(deg|#176);&#39;i",
                        "&#39;&(#39|#039|#x27);&#39;",
                        "&#39;&(euro|#8364);&#39;i",                // europe
                        "&#39;&a(uml|UML);&#39;",                   // german
                        "&#39;&o(uml|UML);&#39;",
                        "&#39;&u(uml|UML);&#39;",
                        "&#39;&A(uml|UML);&#39;",
                        "&#39;&O(uml|UML);&#39;",
                        "&#39;&U(uml|UML);&#39;",
                        "&#39;ß&#39;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=&#39;&#39;;
       $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,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符       
             $i=$i+3;            //实际Byte计为3
             $n++;            //字串长度计1
          }
          elseif ($ascnum>=192) //如果ASCII位高与192,
          {
             $returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
             $i=$i+2;            //实际Byte计为2
             $n++;            //字串长度计1
          }
          elseif ($ascnum>=65 && $ascnum<=90) //如果是大写字母,
          {
             $returnstr=$returnstr.substr($sourcestr,$i,1);
             $i=$i+1;            //实际的Byte数仍计1个
             $n++;            //但考虑整体美观,大写字母计成一个高位字符
          }
          else                //其他情况下,包括小写字母和半角标点符号,
          {
             $returnstr=$returnstr.substr($sourcestr,$i,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.=&#39;&#39;.$tag.&#39;  &#39;;
            $link_tpl.=$tag.&#39;  &#39;;
        }
        return $link_tpl;
    }
     
}
 
 
 
 
/**
 * 中文转拼类
 *
 * @author  Lukin 
 * @date    2011-01-25 10:44
 */
class PinYin {
    // 码表
    private $fp  = null;
    private $dat = &#39;pinyin.dat&#39;;
 
    public function __construct(){
        $this->dat = dirname(__FILE__).&#39;/&#39;.$this->dat;
        if (is_file($this->dat)) {
            $this->fp = fopen($this->dat, &#39;rb&#39;);
        }
    }
    /**
     * 转拼音
     *
     * @param string $str   汉字
     * @param bool $ucfirst 首字母大写
     * @param bool $polyphony 忽略多读音
     * @return string
     */
    public function encode($str, $ucfirst=true, $polyphOny=true) {
        $ret = &#39;&#39;; $len = mb_strlen($str, &#39;UTF-8&#39;);
        for ($i = 0; $i <$len; $i++) {
            $py = $this->pinyin(mb_substr($str, $i, 1, &#39;UTF-8&#39;));
            if ($ucfirst && strpos($py,&#39;,&#39;) !== false) {
                $pys = explode(&#39;,&#39;, $py); 
                $ret.= implode(&#39;,&#39;, array_map(&#39;ucfirst&#39;, ($polyphony ? array_slice($pys, 0, 1) : $pys)));
            } else {
                $ret.= $ucfirst ? ucfirst($py) : $py;
               
            }
        }
         
        return $ret;
    }
    /**
     * 汉字转十进制
     *
     * @param string $word
     * @return number
     */
    private function char2dec($word) {
        $bins  = &#39;&#39;;
        $chars = str_split($word);
        foreach($chars as $char) $bins.= decbin(ord($char));
        $bins = preg_replace(&#39;/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/&#39;, &#39;$1$2$3&#39;, $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(&#39;pinyin&#39;)) :
/**
 * 取得拼音
 *
 * @param string $str
 * @param bool $ucfirst 首字母大写
 * @return string
 */
function pinyin($str, $ucfirst=true) {
    $py = _pinyin_get_object();
    return $py->encode($str, $ucfirst);
}
endif;

以上就是分享一个PHP 网站SEO及过滤类,方便使用的内容,更多相关内容请关注PHP中文网(www.php1.cn)!

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 电销机器人作为一种人工智能技术载体,可以帮助企业提升电销效率并节省人工成本。然而,电销机器人市场缺乏统一的市场准入标准,产品品质良莠不齐。创业者在代理或购买电销机器人时应注意谨防用录音冒充真人语音通话以及宣传技术与实际效果不符的情况。选择电销机器人时需要考察公司资质和产品品质,尤其要关注语音识别率。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文详细介绍了PHP中与URL处理相关的三个函数:http_build_query、parse_str和查询字符串的解析。通过示例和语法说明,讲解了这些函数的使用方法和作用,帮助读者更好地理解和应用。 ... [详细]
  • 本文介绍了Svn和Maven的使用说明,包括版本控制和构建工具的功能和优势。同时提供了一个相关链接,链接中详细介绍了SvnMaven的使用方法和注意事项。通过学习和使用SvnMaven,开发人员可以更好地进行代码管理、软件开发和协作开发,提高项目管理的效率和质量。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
author-avatar
手机用户2502873667
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有