PHP字符串函数使用说明

根据PHP手册,函数的顺序:

1、addcslashes(string $str, string $checklist), 以C语言风格使用反斜线转义字符串中的字符。

这个函数可以指定哪一些字符进行转义,也就是指定哪一些字符要加上反斜杆(或是用八进制来表示,如:/0)。

参数checklist列表的元素定义了要转义的字符,而str则是待转义的字符串。

   注意:1、".."用于选取ASC码表的范围,如 A..z表示ASC码表中从A到z之间的所有字符都会被转义。

            2、".."右边字符的ASC值要比左边的大,如z..A是错误的表示法。因为ASC码表中z在A的后面。

            3、PHP中预定义的转义字符只有四个,分别是/0,/r,/t,/n。这意味着在双引号 所包含的字符串中/0,/r,/t,/n都表示一个字符。

            4、设置checklist时,注意使用单引号与使用双引号是有很大的区别的。双引号会进行转义,单引号是不会的。

   例: echo addcslashes("zoo['.'@]", 'A..z'); ///z/o/o/['.'@/]   注意[]两个都是A..z之间的字符,所以会被转义。

          echo addcslashes($str, "/0../377");       //所有字符都会被转义,要注意"/0..377"是用双引号的,如果用单引号意义就不同了。

2、string stripcslashes(string $str) 作用与addcslashes函数相反。

3、int ord(string $str) 返回$str中第一个字符的ASC码十进制值。

  注意:1、只提取$str第一个字符。所以就算你输入一字符串也只提取一个字符。

           2、要注意双引号与单引号所包含的字符串的区别,一个有解析,一个只按字面意思原样输出。还要注意,四个预定义转义字符。

  例:echo ord("/n"); // 10

4、string chr(int $ascii) 与ord函数相反。用于把ASC码数值转化为字符。

    例: echo chr(79); // O

5、string addslashes(string $str)  对',",/ 这些符号进行转义。

6、string stripslashes(string $str)与addslashes相反。

字符转义的注意点:

   (1)、/是要根据后面所跟的字符,才能确定是否起转义作用的。在双引号中,后面跟:n,0,r,t,/,"这些字符时,都具有转义的作用。而跟0|x时,就要注意是否可以转义。跟0是可能是8表示八进制转义字符如/075表示=。跟x时,可能表示的是十六进制转义字符如:/x75表示u。

              在单引号中:后面跟 ',/ 时才具有转义的作用,其他的都没有。

7、string bin2hex(string $str) 把二进制数转化为十六进制数。

   注意:转化时,会先把$str字符转化为二进制字符,再转化为十六进制。转化以字节方式进行,高四位字节优先。(后面这句话是手册里的内容,不明白,如果哪一位高手知道,可以留一下言讲解一下。 感激不尽。)

8、chop()与rtrim() , chop()是rtrim的别名。  (chop英文是砍、斩的意思)

    string rtrim(string $str[, string $charlist]): 在没有第二个参数$charlist时, 这个函数会把$str右边所有的,/0, 空格,/t,/n,/r,/x0B(垂直制表符,垂直制表符目前打印机中才会使用到。垂直制表符真正的意图是能垂直地往上移,而不是往下移.),都去掉。

  例:echo chop("Luffy/n/t/0 /x0B"); //Luffy

        echo rtrim("Luffy/n/t/0 /x0B");//Luffy

9、string chunk_split(string $body [, int $chunklen[, string $end]]) 把字符串分割成小块。

    本函数不会修改原来的$body字符串,而是生成一个新的字符串。也就是说传入的字符串不变。(具体什么用途待补充。。。)

10、string convert_cyr_string (string $str, string $from , string $to) 将字符串由一种Cyrillic字符转换为另一种

   什么是Cyrillic字符:(cyrillic意思古代斯拉夫语的字母,也称西里尔字母),可参考http://en.wikipedia.org/wiki/Cyrillic_alphabet

   这个函数支持:

  • k - koi8-r
  • w - windows-1251
  • i - iso8859-5
  • a - x-cp866
  • d - x-cp866
  • m - x-mac-cyrillic

其中$from, $to都是单个字符,也就是上面提供的这些字符。如果你输入的不只一个字符,那么就用第一个字符来当作参数。同时,如果提供的参数不是上面提到的那些字符的话,会提示warning级别的错误。

这个函数不改变原有字符。

例:echo convert_cyr_string("编程语言", "a", "w"); // �+��������

输出就是上面的字符,很怪是吧。 最后面的附件里头有上面那些字符集的说明。

11、string convert_encode(string $str) 把字符串按uuencode算法进行uuencode编码。

     uuencode: 是一种编码。它可以把二进制文件转化成为文本文件,以便用于邮件发送。收到这种文件时,可以通过uudecode进行解码。

    例:echo  convert_uudecode ( "+22!L;W9E(%!(4/"$`/n`" ); // I love PHP!

12、string convert_decode(string $data) 与convert_encode的作用相反。

13、mixed count_chars(string $string[, int mode]) 返回字符串中,所有字符的信息。

       这个函数用于统计字符串中各个字节出现的次数。它会根据mode的值返回不同的值。

       mode = 0: 这是默认的设置, 这个设置会返回以字节值(ASC码数值)为下标,以出现次数为值的数组,这个数组包含所有的字节值出现的情况,也就是说,ASC码表中的所有值都会列出。

       例:

$data = "PHP";
foreach (count_chars($data, 0) as $i => $val) {
    echo "There were $val instance(s) of /"" , chr($i) , "/" in the string./n";
}

输出: 输出的是256行字串

前面省略

There were 0 instance(s) of "F" in the string.
There were 0 instance(s) of "G" in the string.
There were 1 instance(s) of "H" in the string.
There were 0 instance(s) of "I" in the string.
There were 0 instance(s) of "J" in the string.
There were 0 instance(s) of "K" in the string.
There were 0 instance(s) of "L" in the string.
There were 0 instance(s) of "M" in the string.
There were 0 instance(s) of "N" in the string.
There were 0 instance(s) of "O" in the string.
There were 2 instance(s) of "P" in the string.
There were 0 instance(s) of "Q" in the string.
There were 0 instance(s) of "R" in the string.

后后省略

 

mode = 1:  只返回出现次数大于0的数组。

例:

foreach (count_chars($data, 1) as $i => $val) {
    echo "There were $val instance(s) of /"" , chr($i) , "/" in the string./n";
}

输出:

There were 1 instance(s) of "H" in the string.
There were 2 instance(s) of "P" in the string.

 

mode = 2: 只返回出现次数等于0的数组。

mode = 3: 返回由在字符串中出现的字符所组成的字符串,按asc码顺序排序。

例:

$data = "PHP is a world!";
echo count_chars($data, 3);

输出: !HPadilorsw (注意这个字符串的最前面是一个空格,空格在ASC码表值是32。)

mode = 4: 返回没有在字符串中出现的字符组成的字符串。

注意: 1、它返回的是以一个字节(8位)所能表示的所有字符的集或子集。也就是ASC码值0-255之间的值

          2、汉字算两个字节,所以会被拆开。

14、int crc32(string $data) 计算crc32循环冗余校验码的多项式。

       了解crc: http://zhidao.baidu.com/question/5381768.html

http://baike.baidu.com/view/410181.htm

15、string crypt(string $data[, string $salt]) 用于加密数据,其中salt可以指定使用什么加密算法。如果没有提供salt那么会随机的使用支持的加密算法。

      目前支持的加密算法有:

      标准DES加密算法,        拓展DES加密算法,       MD5加密算法, Blowfish加密算法。

    salt:  (CRYPT_STD_DES)   (CRYPT_EXT_DES)     (CRYPT_MD5)   (CRYPT_BLOWFISH)

 

16、void echo (string $arg1 [, $string $arg2...])。输出所有的参数。

      echo是一种语言结构而不是一个函数。

      1、echo不能用于变量函数中。如$var = echo;

      2、echo如果带有多个参数时,不能使用括号。比如echo ("你好","PHP世界")。这是一个错误的语法。你可以使用逗号来带多个参数时,如 echo "你好","PHP世界";

      3、如果你在php.ini里开启了short_open_tag, 这个短标签语法的话,那么可以用来代替echo;

     例:echo ('21'.'32'); // 2132 (注意括号里头是连接号.而不是逗号,如果用逗号的话是错误的)

           echo '21','32';  // 2132 (多个参数时,不能使用括号)

         // Because echo does not behave like a function, the following code is invalid.
         ( $some_var ) ? echo  'true'  : echo  'false' ;  //这个结构是错误的。

17、int print(string $arg) ; 输出一个字串。

      与echo的区别:

      1、echo 可以输出多个参数,而print只能带一个。如:print "PHP","World"; //这个句子是错误的。(注意这里是用逗号连接的)

      2、print有返回值,且返回值永远是1。而echo没有。

      3、print可以这样调用 :

   1 ? print "PHP" : print "Jsp";  //PHP
   var_dump(print "php");   //PHPphpint(1)

而echo是不行的。


18、int printf(string $format[, mixed $args [, mixed ...]]) 输出格式化的字串,并返回输出字符串的长度。

       这个函数的功能及格式与sprintf基本相同。唯一的区别是 printf输出字符串并返回字符串的长度。而sprintf返回字符串,而且 输出。

       下面来说明一下$format中可以带的一些参数, 注意 ,$format可以同时使用下面一个或是多个参数,但是参数必须按我下面介绍的顺序进行添加:

       $str = "I love it.";

       $n   = 123;

       $u   = -123;

       +: 强制数字要加符号,只对数字形式输出有效

       printf("PHP %+d", $n); //PHP +123

      ' : 更改默认填充字符, 默认的填充字符是空格。

       printf("This is %'-15s", $str); //This is ------PHP World (用- 来代替空格,填充$str使得,$str的长度为15)

      - : 像字符串左对齐,即把填充的字符放于右侧

      printf("This is %'#-15s", $str); // This is PHP World######

      数字:指定输出变量的宽度,如果变量太长,则截取前半部分,如果变量太短,则填充指定字符(默认的填充字符为空格)

      printf("Number is %'#5d", $n); //Number is ##123

      . :点号后面加上数字,表示带几位小数点,默认是6位,这个参数只对数字形式输出有效。

      printf("Float Number is %.5f", $n); //Float Number is 123.00000

      类型标识符: %bcdeufFosxX

      类弄标识符,除了%,其他的用于指出把参数要当作什么形式,然后输出。

      b: printf("Number is %b", $n); //Number is 1111011  把$n当作数字,然后以二进制的形式输出

      c: printf(" Number is %c", $n); // Number is { (把$n当作数字,然后以这个数字对应的ASC码表的字符输出)

      d:(把$n当作数字,然后以十进制的形式输出$n)

      u: (与上面相同,只不过以无符号的形式输出)

      f:(以浮点方式输出,本地化识别)

      F:

      s: (以字符串的形式输出)

 

 

 

 

 

你可能感兴趣的:(PHP编程,php,string,加密,算法,语言,hex)