主要内容:总结了第四章,主要关于字符串处理。参考书籍《精通 php5 应用开发》。

1 )字符串运算符

其他运算符好多与 java 类似。不过字符串链接符号就不同: php 中用 '.'

   

2 )字符串分析

在某些语言里字符串是作为字符数组处理的,而 php 把字符串作为一种基本的数据类型来处理。因此, php 使用特定的函数对字符串进行分析。

    基本的字符串分析函数:

    strlen () :计算字符串的长度

    substr () :取子串

    strpos() strrpos(): 计算子字符串出现的位置

    eg:

$str = "hello php world! ";

       echo "<br>"; 

       echo substr($str,10,4);

       echo "<br>"; 

       echo substr($str,10);

       echo "<br>"; 

       echo strpos($str,"l");

       echo "<br>"; 

       echo strrpos($str,'l');

       echo "<br>"; 

    strpos 方法是取第一个匹配位子, strrpos 方法是取最后一个匹配的位子。而这两个方法需要注意一点:当

    没有查询到特定字符串出现的位置时,函数将返回 FALSE 。因此判断一个字符串中是否含有另外一个子串的正确方法是

    使用恒等 “===”

    eg:

    if(strpos($str,"w")===false)

    {//...}

3 )取字符串偏移 ( 访问字符串中的字符 )

如上的方法基本能对字符进行基本操作。

但是下面介绍一些方法来方便的访问字符串的字符

   

    一个非常好用的方法那就是使用 {} 括号来取偏移字符

    eg:

    $str= 'this is a book.';

    echo $str{3};//output 's'

    利用这个方法反序排列字符串:

    $str="this is a book.";

    $len = strlen($str);// 这里前面一直出错,一个错误是因为 $len 前加了个 int

    for($i=$len-1;$i>=0;$i--)

    {

       echo $str{$i};

    }

4 )字符串中的分割与连接

 

    分隔字符串,可以使用函数 explode () ,该函数有三个参数,第一个参数设置一个分割字符(串)。第二个参数指定所要操作的字符串。第三个参数可选,指定最多将字符串分割为多少子串。该函数返回一个由被分割的子串组成的数组。

eg

       <?php

       $this_year = 2007 ;

       $text = <<< EOT

       祝无双 , F , 1982 , 广东 , 普通职员

       李大嘴 , M , 1981 , 河北 , 普通职员

       佟香玉 , F , 1980 , 山西 , 项目经理

EOT;

       $lines = explode ( "\n" , $text );

       foreach ( $lines as $userinfo )

       {

           $info = explode ( "," , $userinfo , 3 );

           $name = $info [ 0 ];

           $sex =( $info [ 1 ]== "F" )? " " : " " ;

           $age = $this_year - $info [ 2 ];         

           echo " 姓名 :" . $name . " " . $sex . " 年龄: " . $age . "<br>" ;

       }

      ?>

 

关于定界符 <<< ,字符串必须包含在一组定界符内。细节 结束符号必须顶格。

刚开始看书上的 EOT ,EOD 以为有什么区别,结果我试了下,随便写。前后对应,符合标识符的命名规则就行。

 

php explode 对应 JAVA javascript 里的 split 方法。】

 

连接字符串 implode() 函数,它的别名叫 join

eg

    <? php

        $fruits = array ( 'apple' , 'banana' , 'pear' );

        $tem = join ( "," , $fruits );

        echo $tem ;

      ?>

javascript 里面有 join 方法,也能很方便将数组组合为字符串。

 

5 )字符串的整理

删除字符串的空白, trim () .

       <?php

       $str = "         sdf" ;

       echo strlen ( $str );

       echo "<br>" ;

       echo strlen ( trim ( $str ));

      ?>

trim 删除的是前后空格。

ltrim rtrim 两个函数也是删除空格,一个删除左边空格,一个删除右边空格。

而且删除的是单字节空格,当这些空格是全角空格这些函数是没有作用的。

【?但双字节空格在程序里怎么分的?】

 

6 )字符串的填补

 

str_pad 函数用于进行字符串的填补工作,

第一个参数是处理的字符串对象,第二参数是总长度,第三个参数是指长度不够总长以什么符号来填补,第四个参数为填补左边还是右边(默认不写为填补右边)。

eg

    <? php

       $prices = array (

       " 人员工资 " => 42840 , " 房租 " => 4000 , " 维修费 " => 925 ,);

       $sum = 0 ;

       foreach ( $prices as $title => $pay )

       {

           $sum += $pay ;

           echo str_pad ( $title , 15 , "=" );

           echo str_pad ( $pay , 15 , "=" , STR_PAD_LEFT );

           echo " <br>" ;

       }

       echo str_repeat ( "-" , 30 ), "<br>" ;

       echo str_pad ( " 总支出 " , 15 , "=" );      

       echo str_pad ( $sum , 15 , "=" , STR_PAD_LEFT );

       echo " <br>" ;

      ?>

 

7 )字符串的反转

前面曾经讲过字符串反转的例子,实际上 php 已经内置了这个函数。 strrev () 函数可以对字符串中的字符反序排列,这种反序是按照字节进行的。

    <?php

         echo strrev("hello world !");

     ?>

 

(8) 字符串大小写转换

关于字符串大小写的转换函数,主要有以下四个。

strtoupper (): 将给定的字符串全部转换为大些字母

strtolower () :将给定的字符串全部转换为小写字母

ucfirst () 将给定的字符串的首字母转换为大些,其余不变。

ucwords () :将给定的字符串中全部单词的首字母转换为大写。字符串中的单词均以空白分隔。

    <?php

       $str = "Tom Is A PHP Programer.";

       // 全部转换为小写

       $lower = strtolower($str);

       echo $lower;

       // 全部转换为大写

       $upper = strtoupper($str);

       echo $upper;

       // 将整句首字母大写

       $string = 'hello php world!';

       echo ucfirst($string);

     ?>

 

9 )字符串的比较

 

除了运算符: < > === 等,还可以有以下三种方法。

 

按字节比较: strcmp() strcasecmp()

 

放入 strcmp 的两个字符串将按照字节的 ascii 码值进行比较。从 $str1 $str2 各自的首字节开始。如果前者小于后者返回负数,反之正数,相等为零。

【书上这里是错的,他写的是前者大于后者返回负数】

    <? php

       $test = strcmp ( "Thomas" , "Tom" );

       echo $test ;

       if ( strcmp ( " 大连 " , " 大庆 " )> 0 )

       {

           echo " 大连 " ;

       } else

       {

           echo " 大庆 " ;

       }

      ?>

php 中也可以进行忽略大小写比较,使用函数 strcasecmp (). 这就是说,同一个字符的大小写形式认为是相等的。

 

按自然排序法比较 strnatcmp() strnatcasecmp()

 

模拟了人类的思维习惯。

    <? php

    $arr = array (

    "photo1.jpg" , "photo2.jpg" , "photo10.jpg" , "photo12.jpg" ,);

    $max_str = $arr [ 0 ];

    for ( $i = 1 ; $i < count ( $arr ); $i ++)

    {

       if ( strnatcmp ( $arr [ $i ], $max_str )> 0 )

       {

           $max_str = $arr [ $i ];

       }

    }

    echo $max_str ;

      ?>

本来以为输出是 photo2.jpg ,但经过 strnatcmp 输出的结果是 photo12.jpg.

strnatcasecmp 是这个函数也是忽略字母大小写后,进行比较。

 

使用模糊比较

 

similar_text 作用在两个字符串,返回它们中相匹配的个数。

soundex() 计算出一个关键值。

感觉用得少,不总结。

 

10 )字符串的替换

php 中提供了强大的字符串替换功能,可以使用 str_replace() strtr() 两个函数实现字符替换功能。他们都可以将给定字符串的指定部分用另外一个字符串替换。

str_replace() 函数有三个参数,第一个参数称为目标对象,第二个参数是替换对象,最后一个参数是所要处理的字符串。通俗说:用第二个字符串替换第三个字符串中的第一个字符串对应的字符串。

eg

str_replace("\\","",$json);

strtr 也叫字符串翻译。我认为没有必要记忆这么多相同功能的函数。 J

11 )字符串的格式化

php 中可以使用 printf() sprintf() 两个参数有相同的参数列表,并且都支持多个参数。其中,第一个参数是格式化字符串,可以包含以百分号开始,且以格式类型字符结束的格式单元。格式单元的数量可以任意。函数中余下的参数变量将按顺序放到这些单元中格式化。

<? php

       // 日期的表示

       $date = sprintf ( "%04d-%02d-%02d" , 2006 , 9 , 3 ); // 返回 "2006-09-03"

       echo $date ;

       // 价格的表示

       $money1 = 1038.45 ;

       $money2 = 2154.75 ;

       $sum_money = sprintf ( "%01.2f " , $money1 + $money2 ); // 返回 "3193.20 "

       echo $sum_money ;

       // 整数和字符串

       $format = "There ara %d dogs in %s." ;

       printf ( $format , "5.1" , "my room" ); // 输出 There ara 5 dogs in  my room.

      

       // 一个百分比

       printf ( "%.2f%%" , 32.1 ); // 输出 "32.10%"

      ?>

格式化数字

 

我们经常在国际惯例中发现,表示价格或其他数字,经常用到千位分隔符。

number_format 2 种用法:

第一种:

    <? php

       $number = 1234.5678 ;

       echo number_format ( $number ); // 没有小数,进行了四舍五入

       echo number_format ( $number , 2 ); // 保留 2 位小数,也进行了四舍五入

      ?>

这种也是我们常用的。而在个别地区的数字表示方式。例如数字的格式表示为“ 1 234,56

<? php

       $number = 1234.5678 ;

       echo number_format ( $number , 2 , ',' , ' ' );

?>

其中前两个参数不用多说,第三个参数是小数点的表示,第四个参数是千位分隔符号。

 

关于此次 php 学习,是项目用 php ,所以我学习 php ,刚开始没有想到 php 有那么强大。随后发现其非常强大,但是学习笔记也不打算继续。只是以后在 php 中遇到什么问题,准备 php 手册随时查阅。

posted on 2007-08-23 23:33 -274°C 阅读(701) 评论(0)  编辑  收藏 所属分类: PHP

只有注册用户登录后才能发表评论。


网站导航:
 

常用链接

留言簿(21)

随笔分类(265)

随笔档案(242)

相册

JAVA网站

关注的Blog

搜索

  •  

积分与排名

  • 积分 - 870473
  • 排名 - 37

最新评论