legend3---设置课程视频的seo的关键词

legend3---设置课程视频的seo的关键词

一、总结

一句话总结:

在中文和其它类型的文字中添加空格即可,也就是【拆分中文和其它类型的文字】,这样将【视频标题】拆分的结果一般就可以是视频的关键字,再加上【课程的关键字】,就非常nice了
    //拆分视频的关键字
    public static function split_video_keywords($video_title){

        //1、去掉视频标题前的课程序号
        //比如去掉 3.3、砝码称重-01背包2  前面的 3.3、
        $now_str = self::delete_video_num($video_title);
        //"砝码称重-01背包"
        dump($now_str);

        //2、相邻的中文和其它类型的文字之间加空格
        $ans_str=self::add_space($now_str);
        dump($ans_str);

        //3、对视频标题按照特殊符号(比如-)进行替换
        //变成'/[-|(|)|(|)]/i'后,会有一些情况是乱码
        $pattern2 = '/[-]/i';
        $ans_str=preg_replace($pattern2, ' ', $ans_str);
        dump($ans_str);

        //4、将多个空格替换成一个
        $pattern4 = '/s{1,}/';
        $ans_str=preg_replace($pattern4,' ',$ans_str);
        $ans_str=trim($ans_str);
        dump($ans_str);
        return $ans_str;
        //($ans_str);
    }


    //3、相邻的中文和其它类型的文字之间加空格
    public static function add_space($str){
        $str_arr=self::mb_str_split($str);
        $now_type_Chinese=false;//当前字符是中文么
        $last_type_Chinese=false;//上一个字符是中文么
        $ans_str="";
        foreach ($str_arr as $key => $val){
            //dump($val);
            //dump(self::isChinese($val));
            if(self::isChinese($val)){
                $now_type_Chinese=true;
            }else{
                $now_type_Chinese=false;
            }
            //如果上一个字符和这个字符不同为中文,就拼接字符串
            //dump([$last_type_Chinese,$now_type_Chinese]);
            if($now_type_Chinese!=$last_type_Chinese) $ans_str.=" ";

            //4、将中文中的特殊字符【比如“的、和”】替换成空格
            $chinese_empty_word=['的','和','之','在','中','里','也','是','求'];
            if(in_array($val,$chinese_empty_word)) $val=" ";

            //把当前字符拼接进结果字符串
            $ans_str.=$val;
            $last_type_Chinese=$now_type_Chinese;
        }
        return $ans_str;
    }

1、遍历带中文的字符串?

用正则拆分成数组,然后数组的元素一个个遍历即可
//2、拆分一个中文字符串
public static function mb_str_split($string) {
  // /u表示把字符串当作utf-8处理,并把字符串开始和结束之前所有的字符串分割成数组
  return preg_split('/(?<!^)(?!$)/u', $string );
}

2、php将多个空格替换成一个?

$ans_str=preg_replace('/s{1,}/',' ',$ans_str);
//4、将多个空格替换成一个
$pattern4 = '/s{1,}/';
$ans_str=preg_replace($pattern4,' ',$ans_str);
$ans_str=trim($ans_str);

3、php判断一个字符是中文还是英文?

return preg_match('/^[x{4e00}-x{9fa5}]+$/u',$str);
//1、判断一个字符是中文还是英文
public static function isChinese($str){
  return preg_match('/^[x{4e00}-x{9fa5}]+$/u',$str);
}

二、设置课程视频的seo的关键词

博客对应课程的视频位置:

<?php

namespace AppModelHomeSeo;

use IlluminateDatabaseEloquentModel;

//处理前端网页中的seo中的keywords
class Keywords extends Model
{
    //拆分视频的关键字
    public static function split_video_keywords($video_title){

        //1、去掉视频标题前的课程序号
        //比如去掉 3.3、砝码称重-01背包2  前面的 3.3、
        $now_str = self::delete_video_num($video_title);
        //"砝码称重-01背包"
        dump($now_str);

        //2、相邻的中文和其它类型的文字之间加空格
        $ans_str=self::add_space($now_str);
        dump($ans_str);

        //3、对视频标题按照特殊符号(比如-)进行替换
        //变成'/[-|(|)|(|)]/i'后,会有一些情况是乱码
        $pattern2 = '/[-]/i';
        $ans_str=preg_replace($pattern2, ' ', $ans_str);
        dump($ans_str);

        //4、将多个空格替换成一个
        $pattern4 = '/s{1,}/';
        $ans_str=preg_replace($pattern4,' ',$ans_str);
        $ans_str=trim($ans_str);
        dump($ans_str);
        return $ans_str;
        //($ans_str);
    }

    /****************************二:工具函数部分***************************/
    //1、判断一个字符是中文还是英文
    public static function isChinese($str){
        return preg_match('/^[x{4e00}-x{9fa5}]+$/u',$str);
    }

    //2、拆分一个中文字符串
    public static function mb_str_split($string) {
        // /u表示把字符串当作utf-8处理,并把字符串开始和结束之前所有的字符串分割成数组
        return preg_split('/(?<!^)(?!$)/u', $string );
//        return preg_split('/[x{4e00}-x{9fa5}]/u', $string );
    }

    //3、相邻的中文和其它类型的文字之间加空格
    public static function add_space($str){
        $str_arr=self::mb_str_split($str);
        $now_type_Chinese=false;//当前字符是中文么
        $last_type_Chinese=false;//上一个字符是中文么
        $ans_str="";
        foreach ($str_arr as $key => $val){
            //dump($val);
            //dump(self::isChinese($val));
            if(self::isChinese($val)){
                $now_type_Chinese=true;
            }else{
                $now_type_Chinese=false;
            }
            //如果上一个字符和这个字符不同为中文,就拼接字符串
            //dump([$last_type_Chinese,$now_type_Chinese]);
            if($now_type_Chinese!=$last_type_Chinese) $ans_str.=" ";

            //4、将中文中的特殊字符【比如“的、和”】替换成空格
            $chinese_empty_word=['的','和','之','在','中','里','也','是','求'];
            if(in_array($val,$chinese_empty_word)) $val=" ";

            //把当前字符拼接进结果字符串
            $ans_str.=$val;
            $last_type_Chinese=$now_type_Chinese;
        }
        return $ans_str;
    }

    //4、去掉视频名字前面的标号
    public static function delete_video_num($video_title){
        $video_title= trim($video_title);
        $pattern = '/^((d+)[.|、|。]+)+/i';
        $now_str=preg_replace($pattern, '', $video_title);
        return $now_str;
    }
}

 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/13285502.html