PHP函数rtrim()使用中的怪异现象分析

yipeiwu_com6年前PHP代码库

本文实例讲述了PHP函数rtrim()使用中的怪异现象。分享给大家供大家参考,具体如下:

今天用rtrim()函数时遇到了一个奇怪的问题:

echo rtrim('<p></div>', '</div>'); // 输出为 <p
echo ltrim('www.jb51.net','www.'); // 输出为 jb51.net

以上的输出结果有点出人意料,本来我想第一行应该输出<p>,第二行会输出jb51.net。

这个问题纠结了我好久,一直没有找到原因,后来在手册中找到了答案:

rtrim()是以字符为单位替换,而不是以字符串的。从右往左替换时</div>6个字符肯定会被替换掉的,再往左时遇到了>,因为>也包含在rtirm()的第二个参数的字符串(</div>)中,所以也被替换掉了,当再往左时遇到了p,这时p不包含在第二个参数的字符串中。所以替换停止,输出了<p。

如果这样理解的话,第二行的输出结果就是在意料之中了。呵呵……手册中已经写的清清楚楚了。原文:

You can also specify the characters you want to strip, by means of the charlist parameter. Simply list all characters that you want to be stripped. With .. you can specify a range of characters。

由此可见,rtrimltrimtrim第二个参数是作为一组字符列表进行匹配操作的。这与我们以往认识的str_replace函数的替换操作不一样。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php字符串(string)用法总结》、《php常用函数与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数组(Array)操作技巧大全》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

PHP实现简单汉字验证码

现在越来越多的网站都开始使用汉字验证码了,既增加了我们国人的亲切感,同时也增加了机器破解的难度,这里我就简单粗暴的说一下。。。 创建背景画布 $image = imagecreate...

php中__destruct与register_shutdown_function执行的先后顺序问题

根据php手册的解析。 __destruct是 析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。 而register_shutdown_function是 Regis...

PHP5 的对象赋值机制介绍

复制代码 代码如下: <?php class SimpleClass{ public $var = 'a default value'; public function displ...

PHP通过正则表达式下载图片到本地的实现代码

复制代码 代码如下:<?php /* author: ssh_kobe date: 20110602 shortage: 如果网页中的图片路径不是绝对路径,就无法抓取 */ set...

PHP实现支持SSL连接的SMTP邮件发送类

本文实例讲述了PHP实现支持SSL连接的SMTP邮件发送类。分享给大家供大家参考。具体如下: 该实例代码测试过了gmail和QQ邮箱的SMTP。具体代码如下: 复制代码 代码如下:<...