当前位置: 首页 > 图文教程 > 网络编程 > PHP > 探索字串的奥秘

PHP
php 多线程上下文中安全写文件实现代码
PHP类的使用 实例代码讲解
用php实现让页面只能被百度gogole蜘蛛访问的方法
php 学习笔记
PHP编程过程中需要了解的this,self,parent的区别
php 操作excel文件的方法小结
使用PHP获取网络文件的实现代码
PHP 巧用数组降低程序的时间复杂度
php下将XML转换为数组
php 文件上传代码(限制jpg文件)
php 无极分类(递归)实现代码
PHP 采集获取指定网址的内容
PHP 将图片按创建时间进行分类存储的实现代码
PHP 存储文本换行实现方法
PHP 批量更新网页内容实现代码
用PHP查询搜索引擎排名位置的代码
用php实现的获取网页中的图片并保存到本地的代码
php实现首页链接查询 友情链接检查的代码
处理php自动反斜杠的函数代码
php实现的遍历文件夹下所有文件,编辑删除

PHP 中的 探索字串的奥秘


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 45 ::
收藏到网摘: n/a

 在许多Web编程里,字符串总是会被大量地生成和处理的。正确地使用和处理字符串,对于PHP程 序员来说也同样越来越重要了。本文从最简单的字符串定义一直引导你到高层字符串处理技巧,希望 对大家有所帮助。
  
一、引号定义字符串

  在PHP中,通常一个字符串被定义在一对引号中,如:

  'I am a string in single quotes'
"I am a string in double quotes"

  PHP语法分析器是用成对的引号来判断一个字符串的。因此,所有字符串必须使用同一种单或者双 引号来定义开始和结束。例如,下面的字串定义是不合法的:

  "I am not a valid string since I have unmatching quote marks'
'Me neither!"

  定义字符串时,只有一种引号被视为定义符,即单引号或双引号。于是,如果一个字符串由双引号开始,那么只有双引号被分析器解析。这样,你就可以在双引号串中包含任何其他字符,甚至单引号。下面的引号串都是合法的:

  $s = "I am a 'single quote string' inside a double quote string";
$s = 'I am a "double quote string" inside a single quote string';

  当PHP遇到与串的开头相对应的引号时,便认为已经到了字符串尾部,于是:

  "Why doesn't "this" work?"

  实际上被PHP语法分析器分成三个部分:

  "Why doesn't "——包含一个单引号的双引号串
this——多余的字符,分析器无法处理" work?" ——普通字符串

  上面的这个例子企图在双引号串中包含双引号,而分析器在遇到第二个双引号时便认为字符串结束了。要达到包含引号的目的, 必须分析器在遇到串内普通引号的时候忽略它的原意,我们在引号的前面加上一个反斜杠来告诉PHP:这个引号是字符串的一部分,正确的表示方法是这样:

"Why doesn't \"that\" work?"

  在英文字符串中一个常见的问题是撇号'的使用,因为它就是一个单引号,而在英文串中十分常见 (英文所有格)。你必须小心处理这些字符:

  'You\'d better escape your apostrophes'

  可以看到反斜杠在字符串中有他的特殊含义,当我们需要在字符串中包含反斜杠本身时,需要在
该符号前面多加一个反斜杠。例如:

  $file = "c:\windows\system.ini";
  echo $file; // 打印结果为: c:windowssystem.ini
  $file = "c:\\windows\\system.ini";
  echo $file; // 打印结果为: c:\windows\system.ini

  另一种字符串定义方式,能够消除特殊字符的烦恼,而且便于引用较长的文本。该字符串定义方法以<<<符号紧跟一个自定义字符串开头,最后一行以该自定义字符串结束,并且必须顶格。


  二、字串的连接

  字串可以使用字串连接符(.)来连接,如:

  $first_name = 'Charlie';
$last_name = 'Brown';
$full_name = $first_name . ' ' . $last_name;

  常见的用途是建立大块的HTML字串代码,赋值号 (=) 连接符 (.) 可以被简写合并为 (.=) 符号,如:

$html = '<table>';
$html .= '<tr><td>number</td><td>square</td></tr>';
for ( $i=0 ; $i<10 ; $i++) {
  $square = $i * $i;
  $html .= '<tr><td>' . $i . '</td><td>' . $square . '</td></tr>';
  }
$html .= '</table>';


  三、在字串中使用变量

  这个功能让你无须使用连接符号来粘和大量的简单字符串。PHP允许我们在双引号串中直接包含字 串变量,我们可以发现下面的两个字串的处理结果是相同的。

  $full_name = $first_name . ' ' . $last_name;
$full_name = "$first_name $last_name";

  单引号串和双引号串在PHP中的处理是不相同的。双引号串中的内容可以被解释而且替换,而单引 号串中的内容总被认为是普通字符。例如:

$foo = 2;
echo "foo is $foo"; // 打印结果: foo is 2
echo 'foo is $foo'; // 打印结果: foo is $foo
echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行)
echo 'foo is $foo\n'; // 打印结果: foo is $foo\n

  正如你所看到的,在单引号串中甚至反斜杠也失去了他的扩展含义(除了插入反斜杠\\和插入单引号\')。所以,当你想在字串中进行变量代换和包含\n(换行符)等转义序列时,你应该使用双引