2014年07月23日 15:32:35

PHP字符串

作者: 
在整个PHP的编写过程中,使用最频繁的数据类型莫过于字符串和数组了。这篇文章的目的是用最浅显的介绍,让你在使用字符串的过程中能够得心应手。
使用字符串过程中,最让人纠结的问题应该属下面这两个:
1、单引号和双引号的区别
2、关于单双引号的转义

下面就详细说说这两个问题,
1、单引号和双引号的区别
(1)单引号内部不存在特殊字符,所有字符(除了单引号本身\'和转义符\\需要转义),都会原样输出,因此也是字符串定义是的首选。
(2)双引号内部存在特殊字符,比如$var = 10; echo "$var",这个时候双引号内部的变量$var会输出值10,而不是直接输出$var这几个字眼。另外,双引号内部还可以通过转义实现很多特殊字符的输入,比如"\n"输出换行符,"\t"输出tab字符等,具体参考手册,这里就不详细列举。

大家在使用过程中,针对性得选用一种,习惯了,对两者的区分度就会清晰了,比如我就比较喜欢使用单引号,除非需要输出特殊字符才使用双引号。

2、关于单双引号中的转义
(1)它们自己本身和转义符需要转义
(2)双引号中的特殊字符需要转义

使用技巧,每次定义字符串的时候,先写好字符串的前后,
如$var = ''; 或者 $var = "";
然后,再往里面填充内容,遇到本身或转义字符,或者双引号遇到特殊字符,则加入转义符,
如单引号:$var = 'Hello everybody, I\'m Zjmainstay.'; 当内容写到'的时候,我们发现它是单引号本身,则立刻加入转义符,使之成为\'。

或者是双引号:$var = "I say \"Yes\"."; 当内容写到"的时候加入转义,使之成为\"。 

另外,如果发现字符串中只会出现单引号或双引号中的一种,我们可以选择规避的方式避开转义,如上面的两个可以规避写成:
(1)$var = "Hello everybody, I'm Zjmainstay";
(2)$var = 'I say "Yes"';
也就是使用单引号字符串来包含只有双引号的内容,而使用双引号字符串来包含只有单引号的内容。

当出现字符串拼接的时候,我们需要首先闭合,然后再拼接,就会避免不必要的语法错误,如:
(1)$var = '';
(2)$var = '<span></span>'; 
(3)$var = '<span>''</span>'; 
(4)$var = '<span>'..'</span>'; 
(5)$var = '<span>'. $data .'</span>';

说到字符串拼接,还需要介绍一个函数:sprintf
语法:string sprintf ( string $format [, mixed $args [, mixed $... ]] )

这个函数可以帮我们把字符串的拼接简单化,比如:
$var = '<a href="' . $href . '" title="'. $title .'">'. $title .'</a>';

对比:
$var = sprintf('<a href="/%s" title="%s">%s</a>', $href, $title, $title);

从左到右,每个变量填充一个%s,数量必须配对,否则会有错误。

这么写的好处是看起来是一个完整的a标签,然后只是需要填入数据的地方使用了%s替代。%s表示字符串类型,还有%d、%f等类型,大家看手册中的介绍。

与sprintf相近的是vsprintf,这个是传入数组,如:
$data = array($href, $title, $title);
$var  = sprintf('<a href="/%s" title="%s">%s</a>', $data);
它在后面参数比较多或者得到数据正好是数组的时候使用,这个大家有个概念就行了。

除了单引号和双引号之外,还有两种字符串写法:
(1)heredoc结构
$str = <<<HEREDOC
  String here.
HEREDOC;
(2)nowdoc 语法结构 (自PHP 5.3.0以后) 
$str = <<<'NOWDOC'
  String here.
NOWDOC;

HEREDOC 和 'NOWDOC'部分随意命名,首尾对应即可。

heredoc的语法类似双引号,nowdoc的类似单引号。

需要注意的一点是,这两种写法有点“洁癖”,如:
$str = <<<EOD
  String here.
EOD;

(1)在<<<EOD后面不能有任意字符(包括空格)
(2)在EOD;前后都不能有任意字符(包括空格)
nowdoc的一样,这里不再举例。

基于字符串的重要性,请大家学习完本文内容后,查看手册中所有已str_开头的函数,熟悉他们的用法,有不理解的,在下面留言。


未经同意禁止转载!
转载请附带本文原文地址:PHP字符串,首发自 Zjmainstay学习笔记
阅读( 1690 )
看完顺手点个赞呗:
(4 votes)

1.PHP cURL群:PHP cURL高级技术
2.正则表达式群:专精正则表达式
3. QQ联系(加请说明):QQ联系博主(951086941)
4. 邮箱:zjmainstay@163.com
5. 打赏博主:

  1. 模拟登录后数据采集
  2. 网页内容数据采集
  3. 采集内容正则解析
  4. 数据采集难题咨询

阿里云幸运券分享
网站总访问量: