美文网首页
PHP -- 字符串相关函数(1)

PHP -- 字符串相关函数(1)

作者: 潘肚饿兵哥哥 | 来源:发表于2019-07-22 22:38 被阅读0次

    字符串函数和数组函数很重要

    /* 学习大纲
     
     1.定义字符串的方法
     2.单双引号的用法
     3.单双引号转义的不同
     4.单双引号对变量解析的不同
     5.如何选择单双引号
     6.字符串常用函数分类
     */
    
    
    /* 定义字符串的方法
     
     1.单引号;(高效)
     2.双引号;(简便)
     3.heredoc
     4.nowdoc
     */
    
    
    /* 单双引号的用法
     $a = 'abcdefg';
     echo $a;
     $a = 'abcd'e'fg';
     echo $a;//想想差在哪里
     
     $a = "abcdefg";
     echo $a;
     $a = "abcd"e"fg";
     echo $a; //想想问题出在哪里
     */
    
    
    /* 
    单双引号对变量解析的不同
     
     双引号解析字符串内的变量
     单引号不解析
     
     $name = 'zhang';
     echo '$name';
     echo "$echo";
     */
    
    
    /* 字符串常用函数分类
    
     1.字符串长度函数
     2.查找字符位置函数
     3.字符串替换函数
     4.提取子字符函数(双字节)
     5.分割、链接、反转函数
     6.去除、增加空格函数
     7.HTML代码\数据库安全处理有关函数
     8.比较字符函数
     9.字符大小写转换函数
     */
    
    
    
    /* 
    strtolower($str)字符串转换为小写
    strtoupper($str)字符串转换为大写
    ucfirst($str)将字符串第一个字符转为大写
    ucwords($str)将每个单词首字母转为大写
     */
    
    $stu = ['张三', '男', 18];
    /* $name = $stu[0];
    $gender = $stu[1];
    $age = $stu[2];
    echo $name, $gender,$age;
     */
    
    list($name, $gender,$age) = $stu;//这行代码等同于上面注释部分,括号中的变量个数小于等于数组的长度
    //
    echo $name, $gender,$age;
    

    获取字符串的长度(\color{rgba(254, 67, 101, .8)}{英文情况:}):
    空格也会被计算在内:

    $str = 'hello world';
    echo strlen($str);
    echo '<hr />';
    
    $str2 = 'helloworld';
    echo strlen($str2);
    
    image.png

    获取字符串的长度(\color{rgba(254, 67, 101, .8)}{中文情况下,空格也只算一个字符}):

    $str = '你好,世界';
    //不同的编码,显示的长度数量是不同的,utf-8显示15个,gbk显示10个
    //gbk编码每个汉字占2个字节,utf-8每个汉字占三个字节
    echo strlen($str);
    echo '<hr />';
    
    $str2 = '你好, 世界';
    echo strlen($str2);
    
    image.png

    \color{rgba(254, 67, 101, .8)}{mb\_strlen( string , 'UTF-8');返回字符串的长度}
    \color{rgba(254, 67, 101, .8)}{phpstudy版本低于5.4的话(包含5.4),不写'UTF-8'返回值还是15,写了就是5了}

    $str = '你好,世界';
    echo mb_strlen($str, 'UTF-8');
    
    image.png

    函数名是不区分大小写的,函数名可以大小写混写。不会报错,依然能得到该得的的结果
    \color{rgba(254, 67, 101, .8)}{strpos — 查找字符串首次出现的位置}
    \color{rgba(254, 67, 101, .8)}{strrpos — 查找字符串最后一次出现的位置}
    \color{rgba(254, 67, 101, .8)}{stripos — 查找字符串首次出现的位置,不区分大小写}

    //strpos — 查找字符串首次出现的位置
    //返回值就是首次出现的索引值位置。 如果查找的字符不存在,返回false
    $str = 'adsfgejeargwertjkty';
    $pos = strpos($str, 'd');
    echo $pos;
    
    image.png

    查找一个字符是否存在:

    //strpos — 查找字符串首次出现的位置
    //返回值就是首次出现的索引值位置。 
    $str = 'adsfgejeargwertjkty';
    $sub_str = 'a';
    $pos = strpos($str, $sub_str);
    //这样的写法如果查找的是a的话,返回值是0,就是false,所以会输出a不存在,所以要区分0和false,所以要用不全等$pos !== false,而不是直接写$pos
    if($pos !== false ){
        echo '存在';
    }else{
        echo '不存在';
    }
    var_dump($pos);
    
    下面截图中的0就是查找到的字符的索引
    
    image.png
    也可以查找连续的字符,返回值是第一个字符的索引
    如果查找的字符不连续的话,会返回false
    
    $str = 'adsfgejeargwertjkty';
    $sub_str = 'ge';
    $pos = strpos($str, $sub_str);
    if($pos !== false ){
        echo '存在';
    }else{
        echo '不存在';
    }
    var_dump($pos);
    
    image.png

    查找最后一次出现的位置:

    $str = 'aydsfgejeargwertjkty';
    $sub_str = 'y';
    $pos = strrpos($str, $sub_str);
    if($pos !== false ){
        echo '存在';
    }else{
        echo '不存在';
    }
    var_dump($pos);
    下图显示,要查找的最后一个‘y’在索引为19的位置(第二十个字符)
    
    image.png

    \color{rgba(254, 67, 101, .8)}{strstr();查找首次出现到结尾的字符串}
    \color{rgba(254, 67, 101, .8)}{strrchr();查找最后一次出现到结尾的字符串}

    strstr():

    $str = 'gejeabrgwydsabfertjkty';
    echo strstr($str, 'ab');
    
    image.png

    strrchr():

    $str = 'gejeabrgwydsabfertjkty';
    echo strrchr($str, 'ab');
    
    image.png

    \color{rgba(254, 67, 101, .8)}{str\_replace();字符串替换函数}

    str_replace(search,replace,$str):从$str中查找search用replace来替换(用的最多的)

    str_ireplace(search,replace,$str);和上面的函数功能一样,只是这个不区分大小写,上面的函数区分大小写

    strtr($str,search,replace)这个函数中的replace不能为""

    substr_replace($str,$rep,$start[,length]);$str原始字符串,$rep替换后的新字符串,$start起始位置,$length替换的长度,该项可选

    //str_replace(search,replace,\$str)字符串替换函数
    $str = 'gejeabrgwAdsabfertjkty';
    echo str_replace('a', '*', $str);//第一个是替换哪一个,第二个参数是替换成什么,第三个参数是替换哪一个函数
    
    这个函数区分大小写:A没有被替换
    
    image.png

    \color{rgba(254, 67, 101, .8)}{不区分大小写str\_ireplace:}

    //str_ireplace(search,replace,\$str)字符串替换函数
    $str = 'gejeabrgwAdsabfertjkty';
    echo str_ireplace('a', '*', $str);//第一个是替换哪一个,第二个参数是替换成什么,第三个参数是替换哪一个函数
    
    上面的str_replace区分大小写,所以 A 没有被替换
    str_ireplace不区分大小写,A 也被替换了
    
    image.png

    替换多种字符串的方法:

    $str = 'gejeabrgwAdsabfertjkty';
    $str2 = str_ireplace('a', '*', $str);
    
    echo str_replace('b', '#', $str2);
    
    前面已经替换的需要定义函数接收,然后再赋值给后面的函数,就可以完成替换多种字符串
    
    image.png

    ===========================================

    上面这种替换多种花字符串的方法虽然可行,但是太麻烦,每换一次,就要赋一个函数,可以像下面这样写:
    想加多少都可以,直接写在中括号里就行,一一对应

    $str = 'gejeabrgwAdsabfertjkty';
    echo str_replace(['a','b'],['*','#'], $str);
    
    如果第二个中括号里面只有一个'*'
    没有'#'的话,b会被屏蔽掉,不会显示出来
    
    image.png

    要替换的字符串和替换的的字符不对应的情况:

    $str = 'gejeabrgwAdsabfertjkty';
    echo str_replace(['a','b'],['*'], $str);
    
    要替换的是a、b,但是后面只给了一个‘*’,结果就是b被屏蔽了,没有显示出来
    
    image.png
    $str = 'gejeabrgwAdsabfertjkty';
    echo str_replace(['a','b'],['*','#','@'], $str);
    
    上面是前面多,后面少的情况,
    现在是前面少,后面多的情况,
    结果是没有影响,后面多给的替换元素@并没有 起作用
    
    image.png

    相关文章

      网友评论

          本文标题:PHP -- 字符串相关函数(1)

          本文链接:https://www.haomeiwen.com/subject/gxhrlctx.html