Blogger Information
Blog 17
fans 0
comment 0
visits 23114
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP基础知识篇(二)
飞鸿先森的博客
Original
867 people have browsed it

18.字符串操作
    trim()函数:去除字符串收尾空格和特殊字符,返回去掉空格和特殊字符后的字符串
    

 string trim(string str [,string charlist]);

    参数str是要操作的字符串对象,参数charlist为可选参数,指定需要从字符串中删除哪些字符,如果不设置该参数,则所有可选字符都被删除,可选值如下
   \0 null,空值
   \t tab,制表符
   \n 换行符
   \x0B 垂直制表符
   \r 回车符
   "" 空格
 

  $str = "\r\r(:这是一个字符串。  你看出来了吗:)    ";
  echo trim($str).'<br>';
  echo trim($str,"\r\r(::)");

    ltrim()函数:去除字符串左边的空格和特殊字符
    

 string ltrim(string str[,string charlist]);

    rtrim()函数:去除字符串右边的空格和特殊字符
    

 string rtrim(string str[,string charlist]);


19.字符串转义、还原
    手动转义字符,使用“\”:echo 'select * from book where bname=\'PHP从入门到精通\'';
    自动转义字符函数:

 string addslashes(string str)

    自动还原使用addslashes函数转义的字符串函数:

 string stripslashes(string str)

    所有数据在插入数据库之前,最好应用addslashes()函数进行字符转义,以免特殊字符未经转义而在插入数据库时出现错误。
    下面函数实现对字符串中的指定字符charlist前加上反斜杠“\”进行转义
    

 string addcslashes(string str,string charlist)


20.获取字符串的长度,汉字占两个字符,数字、英文、小数点、下划线和空格占一个字符
    

 int strlen(string str)


21.截取字符串
    

 string substr(string str,int start[,int length])

    参数str:指定字符串对象
    参数start:指定开始截取字符串位置,如果参数为负数,则从字符末尾开始截取
    参数length:可选参数,指定截取字符串的个数,如果为负数,则表示取到倒数第length个字符
    注意:start的位置是从0开始计算的,如果使用该函数截取中文字符串,如果截取的长度是奇数(针对GB2312编码),那么会导致截取后的字符串出现乱码(GB2312一个汉字两个字节,UTF-8一个汉字三个字节)。
    可以使用字符串截取来输出一段文字的部分内容,多余的部分使用省略号显示
    $str = '现在一般说来,日本人在打电话给他人时,第一句会先报出自己的姓氏,再问对方是不是某某家,若没打错,才报出要找某某人或有某某事等目的。';

  if (strlen($str)>30) {
       echo substr($str,0,30).'...';   //超过30个字符,用省略号显示
  }else {
       echo $str;
  }

22.比较字符串
 1)按字节进行字符串比较
      

  int strcmp(string str1,string str2)//区分字符的大小写
  int strcasecmp(string str1,string str2)//不区分字符大小写

      参数str1与参数str2指定要比较的两个字符串,如果相等则函数返回值为0,如果参数str1大于str2,则返回值大于0,反之则返回值小于0
 2)按自然排序进行字符串比较
      

  int strnatcmp(string str1,string str2)//区分字符的大小写
  int strnatcasecmp(string str1,string str2)//不区分字符的大小写

      参数str1与参数str2指定要比较的两个字符串,如果相等则函数返回值为0,如果参数str1大于str2,则返回值大于0,反之则返回值小于0,本函数区分字母大小写
 3)指定从源字符串的位置开始比较
     

  int strncmp(string str1,string str2,int len)//区分字符的大小写

      参数str1:指定参与比较的第一个字符串对象
      参数str2:指定参与比较的第二个字符串对象
      参数len:必要参数,指定每个字符串中参与比较字符的数量
      比较字符串中的前n个字符,如果相等则函数返回值为0,如果参数str1大于str2,则返回值大于0,反之则返回值小于0


23.检索字符串
 1)使用strstr()函数查找指定的关键字
    

  string strstr(string haystack,string needle)//区分字符的大小写

      参数haystack:必要参数,指定从哪个字符串中进行搜索
      参数needle:必要参数,指定搜索的对象,如果参数是一个数值,那么将搜索与这个数值的ASCII值相匹配的字符
 2)strchr()函数与其正好相反,该函数从字符串后序的位置开始检索子串的


24.使用substr_count()函数检索子串出现的次数

  int substr_count(string haystack,string needle)

     参数haystack:指定的字符串
     参数needle:指定待查找的子字符串


25.正则表达式
 1)行定位符(^和$)
      “^”表示行的开始,“$”表示行的结尾
      ^tm 该表达式匹配tm开始的字符串,如tm equal Tomorrow Moon
      $tm 该表达式匹配tm结尾的字符串,如equal Tomorrow Moon tm
 2)单词定界符(\b、\B)
      \b 匹配的是一个完整的单词,而不是单词的一部分
      \B 匹配的不是一个完整的单词,而是单词的一部分,如\Btm\B可匹配html、utmost等
 3)字符类([])
      正则表达式区分大小写,如果要忽略大小写,可使用“[]”,一个方括号只能匹配一个字符
      要匹配tm且不区分大小写:[Tt][Mm]
      POSIX风格的预定义字符类
      [:digit:] 十进制数字集合。等同于[0-9]
      [[:alnum:]] 字母和数字的集合。等同于[a-zA-Z0-9]
      [[:alpha:]] 字母集合。等同于[a-zA-Z]
      [[:blank:]] 空格和制表符
      [[:xdigit:]] 十六进制数字
      [[:punct:]] 特殊字符集合。包括键盘上所有特殊字符,如!@#$?等
      [[:print:]] 所有的可打印字符(包括空白字符)
      [[:space:]] 空白字符(空格、换行符、换页符、回车符、水平制表符)
      [[:graph:]] 所有的可打印字符(不包括空白字符)
      [[:upper:]] 所有大写字母,[A-Z]
      [[:lower:]] 所有小写字母,[a-z]
      [[:cntrl:]] 控制字符
 4)选择字符(|)
      可理解为“或”
      要匹配tm且不区分大小写:[Tt][Mm]  也可写成 T|tM|m 意思是以字母T或t开头,后面接一个字母M或m
 5)连字符(-)
      [a,b,c,d...A,B,C,D...]可使用连字符简单写成[a-zA-Z],匹配规则的变量名(以字母或下划线开头)
 6)排除字符([^])
      [^a-zA-Z]匹配不以字母和下划线开头的变量名
 7)限定符(?*+{n,m})
      ? 匹配前面的字符零次或一次 colou?r可匹配colour和color
      + 匹配前面的字符一次或多次 goo+gle可匹配google到goooooo...gle
      * 匹配前面的字符零次或多次 goo*gle可匹配gogle到gooooo...gle
      {n} 匹配前面的字符n次  go{2}gle只匹配google
      {n,} 匹配前面的字符最少n次  go{2,}gle可匹配google到goooo...gle
      {n,m} 匹配前面的字符最少n次,最多m次 employe{0,2}可匹配employ、employe、employee三种情况
 8)点号字符(.)
      点字符可匹配换行符外的任意一个字符
      ^s.t$可匹配sat、sit、set等
 9)转义字符(\)
      与PHP中使用的转义字符类似
 10)反斜杠(\)
      反斜杠显示的不可打印字符
      \a 警报
      \b 退格
      \e Escape
      \f 换页符
      \n 换行符
      \r 回车符
      \t 水平制表符
      \xhh 十六进制代码
      \ddd 八进制代码
      \cx control-x的缩写,匹配由x指明的控制字符,其中x是任意字符

      反斜杠指定的预定义字符集
      \d 任意一个十进制数字,相当于[0-9]
      \D 任意一个非十进制数字
      \s 任意一个空白字符(空格、换行符、换页符、回车符、水平制表符)
      \S 任意一个非空白字符
      \w 任意一个单词字符,相当于[a-zA-Z0-9]
      \W 任意一个非单词字符

      反斜线断言的限定符
      \b 单词定界符,用来匹配字符串中的某些位置 
      \B 非单词定界符序列
      \A 总是能够匹配待搜索文本的起始位置
      \Z 表示在未指定任何模式下匹配的字符,通常是字符串的末尾位置,或者是在字符串末尾的换行符之前的位置
      \z 只匹配字符串的末尾,而不考虑任何换行符
      \G 当前匹配的起始位置
 11)括号字符(())
      小括号的第一个作用就是改变限定符的作用范围
      (thir|four)th 匹配thirth和fourth,如果不是用括号,就变成了匹配thir和fourth
      小括号的第二个作用是分组,也就是子表达式。如(\.[0-9]{1,3}){3},就是对分组(\.[0-9]{1,3})进行重复操作
 12)反向引用
      反向引用,就是依靠子表达式的“记忆”功能来匹配连续出现的字符串或字母。如匹配连续两个it,首先将单词it作为分组,然后加上“\1”即可
       (it)\1


26.声明数组
    

array array[mixed...]

    参数mixed的语法为key=>value,多个mixed之间使用逗号隔开,分别定义索引和值,索引可以是字符串或数字。
    如果省略了索引,则自动产生从0开始的整数索引。如果索引是整数,则下一个产生的索引将是目前索引最大的整数索引+1.如果定义了两个一样的索引,则后定义的覆盖先定义的
    数组中的各数据元素的数据类型可以不同,也可以是数组类型。当mixed是数组类型时,就是一个二维数组


27.数字索引数组
    PHP数字索引一般表示数组元素在数组中的位置,它由数字组成,下标从0开始,数字索引数组默认索引值从数字0开始,不需要特别指定。


28.关联数组
    关联数组的键名可以是数字和字符串混合的形式,而不像数字索引数组的键名只能为数字。在一个数组中,只要有一个键名不是数字,那么这个数组就称为关联数组。
    如果键名是一个字符串,访问数组时需要给索引或者键名加上定界修饰符——单引号或双引号


29.输出数组
    使用echo语句、print语句输出数组中的某一元素,通过print_r()函数可以将数组结构进行输出。语法格式如下
    

bool print_r(mixed expression)

    如果参数expression为普通整型、字符型或实型变量,则输出该变量本身。如果为数组,则按键值和元素的顺序输出该数组中的所有元素。


30.数组的构造
 1)一维数组:
      当一个数组的元素是变量时,称这个数组为一维数组,声明一维数组的一般形式是:
      类型说明符 数组名[常量表达式];
      例:$arr = array(1=>"Java",2=>"C语言",3=>"PHP");
 2)二维数组:
      一个数组的元素如果是一维数组,则称这个数组是二维数组。
    

  $arrstr = array(
      "书籍"=>array("语文","数学","英语"),
      "体育用品"=>array("m"=>"足球","n"=>"篮球"),
      "水果"=>array("橙子",8=>"葡萄","苹果")
  );
  print_r($arrstr);

    输出:Array ( [书籍] => Array ( [0] => 语文 [1] => 数学 [2] => 英语 ) [体育用品] => Array ( [m] => 足球 [n] => 篮球 ) [水果] => Array ( [0] => 橙子 [8] => 葡萄 [9] => 苹果 ) )


31.遍历数组
 1)使用foreach结构遍历数组
    遍历数组最常用的方法是使用foreach结构。foreach结构并非操作数组本身,而是操作数组的一个备份。
    

    $arr = array("1"=>"数据结构","2"=>"算法","3"=>"C语言","4"=>"PHP");
    foreach ($arr as $val){
        echo $val;
    }

    上面的代码中,PHP为数组$arr的每个元素依次循环执行循环体(echo语句),将当前数组元素赋值给$val
 2)使用list()函数遍历数组
    list()函数是把数组中的值赋给一些变量。与array()函数类似,list()函数不是真正的函数,而是一种语言结构。list()函数仅能用于数字索引且索引值从0开始的数组。语法格式如下:
    

void list(mixed...)

    参数mixed为被赋值的变量名称。


32.字符串与数组的转换
 1)使用explode()函数将字符串转换成数组
     

 array explode(string separator,string string [,int limit])

      函数将字符串以指定的字符串或字符(separator)切开,返回由字符串组成的数组,每个字符串都是指定字符串string的一个子串。
      如果设置了limit参数,则返回的数组包含最多limit个元素,而最后那个元素包含string的剩余部分
      如果separator为空字符串(""),explode()函数将返回false
      如果separator所包含的值在string中找不到,那么explode()函数将返回包含string单个元素的数组
      如果参数limit是负数,则返回除了最后的limit个元素外的所有元素。
 2)使用implode()函数将数组转换成一个新字符串
      

string implode(string glue,array pieces)

      参数glue是字符串类型,指要传入的分隔符,参数pieces是数组类型,指被传入的要合并元素的数组变量名称。


33.统计数组元素个数
     使用count()函数对数组中的元素个数进行统计
     

int count(mixed array [,int mode])

     参数array:必要参数。输入的数组
     参数mode:可选参数,其值为0或COUNT_RECURSIVE(1)。如选中此参数,本函数将递归地对数组计数。对计算多维数组的所有单元尤其有用,此参数的默认值为0


34.查询数组中指定元素
     使用函数

array_search(mixed needle,array haystack[,bool strict])

     参数needle指定在数组中搜索的值
     参数haystack指定被搜索的数组
     参数strict为可选参数,如果为true,还将在数组中检查给定值的类型


35.获取数组中最后一个元素
     

mixed array_pop(array array)

     通过函数array_pop()获取数组中的最后一个元素
     参数array为输入的数组
     array_pop函数获取并返回数组的最后一个元素,并将数组的长度减1,如果数组为空(或者不是数组),将返回null


36.向数组中添加元素
     

int array_push(array array,mixed var[,mixed...])

     通过函数array_push()向数组中添加元素。
     参数array为指定的数组
     参数var为压入数组中的值


37.删除数组中重复元素
     

array array_unique(array array)

     通过函数array_unique()删除数组中重复元素
     参数array为输入的数组


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post