zoukankan      html  css  js  c++  java
  • PHP函数 rtrim() 的一个怪异现象

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

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

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

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

    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。

    参考:

    http://www.w3school.com.cn/php/func_string_rtrim.asp

  • 相关阅读:
    POJ 2002 Squares
    POJ 1840 Eqs
    POJ 1759 Garland
    UVA 572 Oil Deposits
    POJ 3278 Catch That Cow
    POJ 2488 A Knight's Journey
    UVA 699 The Falling Leaves
    [Poi1999] 原始生物
    [bzoj3033] 太鼓达人
    [bzoj1123] BLO
  • 原文地址:https://www.cnblogs.com/52php/p/5868059.html
Copyright © 2011-2022 走看看