Chinaunix首页 | 论坛 | 博客
  • 博客访问: 951572
  • 博文数量: 120
  • 博客积分: 6454
  • 博客等级: 准将
  • 技术积分: 1739
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-28 17:45
文章分类

全部博文(120)

文章存档

2014年(1)

2013年(1)

2012年(11)

2011年(16)

2010年(6)

2009年(11)

2008年(30)

2007年(44)

分类:

2007-12-19 23:20:21

      substr()函数在 php manual 中这么给出的:

string substr ( string $string, int $start [, int $length] )
Returns the portion of string specified by the 'start' and 'length' parameters.

      用起来很方便也很强大:将字符串 string 的第 start 位起的字符串取出 length 个字符。若 start 为负数,则从字符串尾端算起。若可省略的参数 length 存在,但为负数,则表示取到倒数第 length 个字符。比如:

substr("abcdef", -3, 1); // returns "d"
substr("abcdef", -3, -1); // returns "de"

      但是函数越强大也越容易被用错,比如这个情况:

<?PHP
echo substr($_GET['text'], 1);
?>

      功能看起来很简单,就是从我们提交的 text 里第二位开始取值取到最后。

      所以如果我们提交 的时候,echo 出来的应该是 bcd 。

      而当我们提交 ’bcd 的时候,则会显示 'bcd ,因为 substr() 在我们提交 'bcd 的时候实际操作的是 \'bcd,串里还有一个看不到的反斜杠,而'\'被 substr 给去掉了,然后留下 'bcd 这样的字符串。

      而substr()函数操作的字符串是\'bcd的原因是:php.ini文件中magic_quotes_gpc设置为了On,这个参数是对得到的GET/POST/Cookie的字符串进行自动转义的:

; Magic quotes for incoming GET/POST/Cookie data.

magic_quotes_gpc = On

 

阅读(3237) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~