首页 > 编程 > PHP > 正文

前端学PHP之字符串函数

2020-03-22 17:11:26
字体:
来源:转载
供稿:网友

  • 前面的话

      字符串的处理和分析在任何编程语言中都是一个重要的基础,往往是简单而重要的。信息的分类、解析、存储和显示,以及网络中的数据都需要操作字符串来完成。尤其在web开发中更为重要,程序员大部分工作都是在操作字符串,本文将详细介绍php中的字符串函数

      [注意]关于javascript中字符串的属性和方法移步至此

    特点

      因为php是弱类型语言,所以其他类型的数据一般都可以直接应用于字符串操作函数中,而自己转换成字符串类型进行处理

    echo substr( '1234567', 2, 4 );  //将字串用函数substr()处理,输出子字符串 345echo substr( 123456, 2, 4 );     //将整型用字串函数处理,输出同样是字符串 345echo hello;           //先找hello常量,找不到就会将常名看作是字符串使用

      字符串貌似数组,可以使用中括号语法,但由于无法与真正的数组进行区别,带来二义性,所以最好使用功能相同的花括号

    $str = 'lamp';       echo $str.'<br>';       echo $str{0};//输出字符串$str中第一个字符lecho $str[1];//输出字符串$str中第二个字符a,[]也可以,不过已过时

      在处理变量解析时,如果在字符串中遇到美元符号,解析器会尽可能多地取得后面的字符以组成一个合法的变量名,如果想明示指定名字的结束,用花括号把变量名括起来

        $lamp = array('os'=>'Linux');      //可以解析    echo 'A OS is $lamp[os].';        //不能解析,如果在对关联数组下标使用引号就必须使用花括号,否则将出错    echo 'A OS is $lamp['os'].';        //可以解析,如果在对关联数组下标使用引号就必须使用花括号,否则将出错    echo 'A OS is {$lamp['os']}.';        //可以解析,注意PHP将数组下标看作常量名,常量不存在时将常量名称转为字符串,效率低    echo 'A OS is {$lamp[os]}.';

      [注意]在php中,一个GB2312编码的汉字占2个字节,一个UTF-8编码的汉字占3个字节

    输出

    echo()

    void echo ( string $arg1 [, string $... ] )

      echo()函数用来输出一个或多个字符串,它会输出所有参数,且不会换行,没有返回值

      echo不是一个函数, 因此不一定要使用小括号来指明参数,单引号,双引号都可以。另外,如果想给echo 传递多个参数,就不能使用小括号

    <?phpecho 'Hello World';$foo = 'foobar';echo 'foo is $foo'; // foo is foobarecho $foo;          // foobar?>

    print()

    int print ( string $arg )

      print()函数用来输出字符串,且总是返回 1

    <?phpprint('Hello World');$foo = 'foobar';print 'foo is $foo'; // foo is foobarprint $foo;          // foobar?>
    var_dump(echo('123'));//报错var_dump(print('123'));//int 1

      echo可以接受多个参数(不可以加括号),而print不可以

    <?phpecho '1','2','3';//123print 'a','b','c';//报错?>

    exit()

      exit()函数用来输出一个消息并且退出当前脚本,没有返回值,同名函数为die()

    void exit ([ string $status ] )void exit ( int $status )

      如果 status 是一个字符串,在退出之前该函数会打印status;如果 status 是一个 integer,该值会作为退出状态码,并且不会被打印输出。退出状态码应该在范围0至254,不应使用被PHP保留的退出状态码255。 状态码0用于成功中止程序

    <?phpexit('0');//0exit(0);//无返回值?>

    printf

      printf()函数用于输出格式化字符串

    int printf ( string $format [, mixed $args [, mixed $... ]] )

    sprintf

      sprintf()函数用于把格式化的字符串写入一个变量中

    string sprintf ( string $format [, mixed $args [, mixed $... ]] )

      html' target='_blank'>字符串转换格式如下

    %%    返回百分比符号%b    二进制数%c    依照ASCII值的字符%d    带符号十进制数%e  科学计数法(如1.5e3)%u    无符号十进制数%f或%F     浮点数%o    八进制数%s    字符串%x或%X  十六进制数
    <?php$var = 10;printf('%%,%b,%c,%d,%e,%u,%o,%f,%s,%x',$var,$var,$var,$var,$var,$var,$var,$var,$var,$var);//%,1010, ,10,1.000000e+1,10,12,10.000000,10,a$result = sprintf('%%,%b,%c,%d,%e,%u,%o,%f,%s,%x',$var,$var,$var,$var,$var,$var,$var,$var,$var,$var);var_dump($result);//string '%,1010, ,10,1.000000e+1,10,12,10.000000,10,a' (length=44)?>

    空格

    trim()

      trim()函数用于去除字符串首尾处的空白字符(或者其他字符),过滤后的字符串

    string trim ( string $str [, string $charlist = ' 	' ] )

      此函数返回字符串str去除首尾空白字符后的结果。如果不指定第二个参数,trim() 将去除这些字符:

    ' ' (ASCII 32 (0x20)),普通空格符'	' (ASCII 9 (0x09)),制表符'' (ASCII 10 (0x0A)),换行符'' (ASCII 13 (0x0D)),回车符'' (ASCII 0 (0x00)),空字节符'' (ASCII 11 (0x0B)),垂直制表符

      charlist为可选参数,过滤字符也可由charlist参数指定。一般要列出所有希望过滤的字符,也可以使用 “..” 列出一个字符范围

    ltrim()

      ltrim函数用于删除字符串开头的空白字符(或其他字符)

    rtrim()

      rtrim函数用于删除字符串末端的空白字符(或者其他字符) 

    <?php$text  = '   		Hello World a1a1a1    ';$trimmed = trim($text);var_dump($trimmed);//string 'Hello World a1a1a1' (length=18)$trimmed = trim($text, 'a1 ');var_dump($trimmed);//string '        Hello World' (length=13)$trimmed = trim($text, '1..e ');//string '        Hello Worl' (length=12)var_dump($trimmed);$ltrimmed = ltrim($text);var_dump($ltrimmed);//string 'Hello World a1a1a1    ' (length=22)$rtrimmed = rtrim($text);var_dump($rtrimmed);//string '           Hello World a1a1a1' (length=23)?>

    str_pad()

      str_pad()函数使用另一个字符串填充字符串为指定长度

    string str_pad ( string $input , int $pad_length [, string $pad_string = ' ' [, int $pad_type = STR_PAD_RIGHT ]] )

      该函数返回input被从左端、右端或者同时两端被填充到制定长度后的结果。如果可选的 pad_string 参数没有被指定,input 将被空格字符填充,否则它将被 pad_string 填充到指定长度

      [注意]如果pad_length的值是负数,小于或者等于输入字符串的长度,不会发生任何填充

    <?php$input = 'Alien';echo str_pad($input, 10); // 输出 'Alien     'echo str_pad($input, 10, '-=', STR_PAD_LEFT); // 输出 '-=-=-Alien'echo str_pad($input, 10, '_', STR_PAD_BOTH); // 输出 '__Alien___'echo str_pad($input, 6 , '___');// 输出 'Alien_'?>

    大小写

    strtolower()

      strtolower — 将字符串转化为小写

    strtoupper()

      strtoupper — 将字符串转化为大写

    ucfirst()

      ucfirst — 将字符串的首字母转换为大写

    ucwords()

      ucwords — 将字符串中每个单词的首字母转换为大写

    <?php$foo = 'hello world!';var_dump(ucwords($foo));//string 'Hello World!' (length=12)var_dump(ucfirst($foo));//string 'Hello world!' (length=12)var_dump(strtoupper($foo));//string 'HELLO WORLD!' (length=12)var_dump(strtolower($foo));//string 'hello world!' (length=12)?>

    HTML

    nl2br()

      nl2br — 在字符串所有新行之前插入 HTML 换行标记

    string nl2br ( string $string [, bool $is_xhtml = true ] )
    <?php/*foo isn't<br /> bar */echo nl2br('foo isn't bar');?>

    htmlspecialchars()

    string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get('default_charset') [, bool $double_encode = true ]]] )

      htmlspecialchars - 把指定特殊符号转换成实体

    & (ampersand)            &amp;' (double quote)        &quot;, unless ENT_NOQUOTES is set' (single quote)        &#039; or &apos;< (less than)            &lt;> (greater than)        &gt;
    <?php$new ='<script>alert(1)</script>';echo $new;//弹出1$new = htmlspecialchars('<script>alert(1)</script>');echo $new; //显示字符串'<script>alert(1)</script>'?>
    <?php    $str = '<B>WebServer:</B> & 'Linux' & 'Apache'';//常有HTML标记和单引号的字符串    echo htmlspecialchars($str, ENT_COMPAT);//转换HTML标记和转换双引号    echo '<br>';    echo htmlspecialchars($str, ENT_QUOTES);//转换HTML标记和转换两种引号    echo '<br>';    echo htmlspecialchars($str, ENT_NOQUOTES);//转换HTML标记和不对引号转换?>

    htmlentities()

    string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get('default_charset') [, bool $double_encode = true ]]] )

      htmlentities - 将所有的非ASCII码转换成对应实体代码

      htmlentities()和htmlspecialchars()的功能都是转换字符为HTML字符编码,特别是url和代码字符串,防止字符标记被浏览器执行。htmlentities转换所有的html标记,htmlspecialchars只格式化& ' ' < 和 > 这几个特殊符号

    <?php$str = '<p>123</p>';echo $str;//显示段落123echo htmlentities($str);//'123'echo htmlspecialchars($str);//'123'?>

    strip_tags()

      strip_tags — 尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果

    string strip_tags ( string $str [, string $allowable_tags ] )

      使用可选的第二个参数allowable_tags指定不被去除的字符列表

    <?php$text = '<p>Test paragraph.</p><!-- Comment --> <a href='#fragment'>Other text</a>';echo strip_tags($text);//'Test paragraph. Other text'echo '';echo strip_tags($text, '<p>').'<br>';//<p>Test paragraph.</p> Other text$text = '<div><b>123</b></div>';echo strip_tags($text);//'123'?>

    addslashes()

      addslashes — 使用反斜线引用字符串,返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(')、反斜线()与 NUL(NULL 字符)

    string addslashes ( string $str )
    <?php$str = 'Is your name O'reilly?';echo addslashes($str);// 'Is your name O'reilly?'?>

    stripslashes()

      stripslashes — 反引用一个引用字符串

    string stripslashes ( string $str )
    <?php$str = 'Is your name O'reilly?';echo stripslashes($str);//'Is your name O'reilly?'?>

    格式化

    strrev()

      strrev — 反转字符串

    string strrev ( string $string )
    <?phpecho strrev('Hello world!'); // 输出 '!dlrow olleH'?>

    strlen()

      strlen — 获取字符串长度

    int strlen ( string $string )
    <?php$str = 'abcdef';echo strlen($str); // 6$str = ' ab cd ';echo strlen($str); // 7?>

    md5()

      md5 — 计算字符串的 MD5 散列值

    string md5 ( string $str [, bool $raw_output = false ] )

      如果可选的raw_output被设置为TRUE,那么MD5报文摘要将以16字节长度的原始二进制格式返回

    <?php$str = 'apple';if (md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {    echo 'Would you like a green or red apple?';}?>

    比较

    strcmp()

      strcmp — 字符串比较,如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0

    int strcmp ( string $str1 , string $str2 )
    <?php$var1 = 'Hello';$var2 = 'hello';if (strcmp($var1, $var2) !== 0) {    echo '$var1 is not equal to $var2 in a case sensitive string comparison';}?>

    strncmp()

      strncmp — 限定字符串长度的字符串比较

    int strncmp ( string $str1 , string $str2 , int $len )

      如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0

    <?php echo strncmp('xybc','a3234',0); // 0 echo strncmp('xybc','a3234',1); // 1 ?>

    strcasecmp()

      strcasecmp — 字符串比较(不区分大小写),如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0

    int strcasecmp ( string $str1 , string $str2 )
    <?php$var1 = 'Hello';$var2 = 'hello';if (strcasecmp($var1, $var2) == 0) {    echo '$var1 is equal to $var2 in a case-insensitive string comparison';}?>

    strnatcmp()

      strnatcmp — 使用自然排序算法比较字符串

    int strnatcmp ( string $str1 , string $str2 )

      如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0

    <?php$arr1 = $arr2 = array('img12.png', 'img10.png', 'img2.png', 'img1.png');usort($arr1, 'strcmp');print_r($arr1);//Array ( [0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png )usort($arr2, 'strnatcmp');//Array ( [0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png )print_r($arr2);?>
    PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表