zoukankan      html  css  js  c++  java
  • PHP字符串处理与正则表达式

    字符串

    1. PHP中的字符串是一种基本数据类型,PHP对unicode没有本地支持。

    2. 字符串可以可以通过花括号来访问每一个字符,并且每个花括号只能存放一个字符:

        $str = ‘abcd’;
        $str{1} = ‘change it’;
        echo $str; // accd

    3. 双引号中变量内插解析,在双引号中的内容会被解析为字符串,

        如果遇到$符号,则会贪婪解析一个尽可能多的合法变量名,使用花括号可以将变量名括起来;

        在双引号中解析数组索引或者对象属性时,也可以使用花括号括起来;

    4. 常用字符串输出函数:

        echo() :输出字符串;

        print() :输出一个活或个字符串,执行效率不如echo高,但是提供一个返回值,成功为1,失败为0;

        die():输出一条消息,并退出当前脚本,和perl中的die用法一样;是exit()含税的别名;

        printf():格式化输出,和c语言类似;

        sprintf():将格式化的字符串以返回值的形式保存到变量中;如一个百分数: $f = sprintf(‘%2.2f’,$f*100);

    5. 字符串格式化函数:

        NewImage

        有点多,要在日后的工作中多使用了,其中*trim()和python中是strim()类似,用来去除一些换行空白等比较好用;nl2br()感觉可能会比较有用,可能是因为似乎用前端的方式更加好一些;htmlspecialchars()处理<、>、等特殊符号很好,不用记忆特殊表示,程序也会更加可读;以及stripslashed()等函数,在网页文本处理中都会应该会比较有用,以后要多总结了。

        number_format()函数可以传入四个位置参数,依次为数字、保留的小数位数、小数分割符(默认为’.’)、千位分割符号(默认为’,’),由于是位置参数,所以如果设置了第四个参数,则前面的参数都是必须的;

        md5()是使用加密算法经行加密后返回一个加密字符串,对文件的加密可以使用md5_file();

    6. 字符串比较函数

        strcmp():比较两个字符串,区分大小写,按照字符串的顺序比较字符ASCALL码大小,注意小写大于大写,和perl比较字符串使用一样的方式;

        strcasecmp():比较两个字符串,不区分大小写;

        strnatcmp():如果有数字的话(数字出现的开始位置要相同),比较数字大小,数字大小相同则比较字符串大小:

    NewImage

    NewImage

    正则表达式

    PHP支持的正则表达式有两套,一套是PCRE,与perl兼容的正则表达式,以preg_为前缀的函数,另外一套是POSIX扩展语法的正则表达式,使用以ereg_为前缀的函数,PCRE提供的正则表达式效率略占优势。

    1. 正则表达式语法和perl中一样;

    2. 字符串查找

        preg_match():接受三个参数,第一个是pattern,第二个是就具体的字符串,第三个参数提供一个数组,保存匹配的内容,其中0下标为匹配的整体,而1开始的表示捕获的内容;

        preg_match_all():PHP中没有模式修正符号:g,用该函数替代,完成全部搜索的功能,区别的是该函数接受第四个可选参数,当第四个参数为PREG_SET_ORDER,下标0的值开始表示捕获的内容;

        preg_grep():第二个参数不再是字符串,而是一个包含字符串的数组,会对数组中每个元素进行匹配,并且返回一个匹配成功的数组;

        strstr():传入两个字符串,在第一个字符串中搜索第二个字符串,返回从第一个字符串从第一次搜索到的位置开始的部分;stristr()是忽略大小写的版本;

        strpos():返回字符串在另外一个字符串中第一次出现的位置,如果没有找到则返回false,strrpos()是从末尾开始查找的版本;

        substr():返回一个字符串的一个部分,指定开始和结束位置;闭区间;

    3. 字符串替换:

        preg_replace():第一个参数是模式,第二个参数是需要替换掉的内容,第三个参数是字符串,前两个参数既可以是单个的模式和字符串,也可以是一个包含多个模式、字符串的数组,数组的内容应该对应,长度相同;

        str_replace():第一个参数是查找的字符串,第二个参数是替换的字符串,第三个参数是需要被替换的字符串内容,第四个保存替换的次数;str_ireplace()是大小写忽略版本;

    4. 字符串分割和链接:

        preg_split():传入两个参数,第一个参数传入匹配模式,第二个为需要分割的字符串,第三个可选参数限制最多返回的子串个数,第四个参数flag是以下标记的任意组合:

        PREG_SPLIT_NO_EMPTY:使preg_split()只返回非空成分 ;
        PREG_SPLIT_DELIM_CAPTURE:使得可以捕获并返回括号表达式 ;
        PREG_SPLIT_OFFSET_CAPTURE:使得返回每个出现的匹配结果的同时,返回所属字符串的偏移量,最终最为一个二元数组;

        explode():传入两个字符串,第一个为分割标记字符串,第二个为被分割的字符串,第三个可选参数限制最多返回的子串个数;相当于split();

        implode():第一个参数是链接字符串,第二个参数提供一个字符串数组,返回使用链接字符串链接数组中字符串后的字符串;相当于join();

     5. 在以上三种基本操作中,如果可以用字符串函数完成的尽量使用字符串函数完成,正则表达式尽量在必须使用的时候才用

  • 相关阅读:
    用任务计划管理计划任务对付任务计划-禁止WPS提示升级
    破解激活Win10无风险?激活后删除激活工具无影响===http://www.pconline.com.cn/win10/693/6932077_all.html#content_page_4
    VS2013 密钥 – 所有版本
    2017面试题1
    模拟锚点
    输入框被软键盘遮
    资源(GitHub)
    全国城市部分js
    subline3 插件
    app下载——js设备判断
  • 原文地址:https://www.cnblogs.com/lyon2014/p/4620062.html
Copyright © 2011-2022 走看看