一个关于PHP中substr_replace函数的问题

呵呵,始终不知道这个函数中start跟length到底是什么意思。 比如:
echo substr_replace("用今日的辛勤工作,换未来的百倍回报!","明日",2,-30);
输出结果为“用明日的辛勤工作,换未来的百倍回报!”,为什么"明日"替换的是
"今日"两个字呢,这里的start为2,只是说明了开始替换的位置,并没有指明要替换
哪些字符啊,比如str_ireplace函数:echo str_ireplace("c","d","abcabc"),
它明确的指出了要用"d"来替换"c",但是substr_replace函数并没有明确的指明
要去替换哪个。还有2跟-30的长度到底怎么算,一个汉字、一个英文或数字、一
个特殊字符(比如感叹号"!"),他们各代表多长,比如如果start为2,
那么echo substr_replace("abcd","h",2)从哪里开始替换?
而echo substr_replace("用今日的辛勤工作,换未来的百倍回报!","明日",2,-30)从哪里开始替换?
这个例子的-30表示起始位置从后面开始,从哪个字符数到哪个字符呢,里面的感叹号"!"占多长?
而句子里的逗号","跟空格""占多长呢?
还有一个例子:
$str="我们之间的爱轻的像空气 而我依然承受不起";
echo substr_replace($str,",","44","1");
输出结果为"我们之间的爱轻的像空气,而我依然承受不起",
这个例子是要用逗号去替换空格,里面的start为什么是44呢
这个44是怎么算出来的?
而 length怎么是1呢,length不是代表返回的字符串的长度吗?
渴求各位高手的解答!

第1个回答  2011-07-01
问了一大串问题才10分,
1、输出结果为“用明日的辛勤工作,换未来的百倍回报!”,为什么"明日"替换的是
"今日"两个字呢
A: echo substr_replace('',"明日",2,-30);
这句的意思是,从第二个字符'今'开始替换,直到-30,负数代表从末端开始往头数的第30个字符时“停止替换”,刚刚替换完'明日',就到-30了,整个长度是+/-36,
==========
2、但是substr_replace函数并没有明确的指明要去替换哪个。
A:这个函数功能是“替换子串”,过程是先得到子串(即和substr功能相同),再把字串用给的'明日'替换(和str_replace相同)
====
3、那么echo substr_replace("abcd","h",2)从哪里开始替换?
A:套用2的回答,先取得子串, 'abcd'从2个位置到末尾,得子串'cd',子串'cd'换成'h',并回去得结果'ah'.
===============
4、这个例子是要用逗号去替换空格,里面的start为什么是44呢
这个44是怎么算出来的而 length怎么是1呢,length不是代表返回的字符串的长度吗?
A:这段文字用的gbk编码,每个汉字2个字节。中间的空格位置从0算起是44,
length是取的子串长度,不是返回长度,取1个长度的子串就是一个空格,把空格替换成逗号本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网