php trim问题
我有个字段"http://www.somesite.com/something/something?error=captcha",想对它进行改造,用了传说中的trim()...
我有个字段"http://www.somesite.com/something/something?error=captcha",想对它进行改造,用了传说中的trim()函数。
$url="http://www.somesite.com/something/something?error=captcha";
使用trim($url,'?error=captcha'),返回“://www.somesite.com/something/something”
使用rtrim($url,'?error=captcha'),返回“http://www.somesite.com/something/something”
虽然我最后用了rtrim正常了,但是很想知道trim的时候,‘http’为啥没了 展开
$url="http://www.somesite.com/something/something?error=captcha";
使用trim($url,'?error=captcha'),返回“://www.somesite.com/something/something”
使用rtrim($url,'?error=captcha'),返回“http://www.somesite.com/something/something”
虽然我最后用了rtrim正常了,但是很想知道trim的时候,‘http’为啥没了 展开
3个回答
展开全部
先上手册
string trim ( string $str [, string $charlist ] )
charlist
可选参数,过滤字符也可由 charlist 参数指定。一般要列出所有希望过滤的字符,也可以使用 “..” 列出一个字符范围。
charlist为希望过滤的字符, 楼主添加的参数中有 ‘?error=captcha' 中包括了 http
所以左侧的http被 trim掉了
ttrim()函数只trim结尾断,所以左侧的被保留了。
共同学习,共同努力!
string trim ( string $str [, string $charlist ] )
charlist
可选参数,过滤字符也可由 charlist 参数指定。一般要列出所有希望过滤的字符,也可以使用 “..” 列出一个字符范围。
charlist为希望过滤的字符, 楼主添加的参数中有 ‘?error=captcha' 中包括了 http
所以左侧的http被 trim掉了
ttrim()函数只trim结尾断,所以左侧的被保留了。
共同学习,共同努力!
追问
ttrim()函数只trim结尾断,所以左侧的被保留了。
说的是rtrim吧?谢了
展开全部
应该是你对参数的含义没理解对:第二个参数是指定要滤过的“字符集”,而不是指“连续的字符串”。
trim的逻辑是,从首尾开始,挨个字符遍历,如果字符在字符集中,则删除该字符并继续判断下一个字符,直到该字符不在字符集为止。
由于你指定的过滤字符集'?error=captcha'包含h、t、p三个字符,所以前边的http会被过滤,而字符集中不包含冒号,所以到了冒号就停止了。
后边正好过滤完'?error=captcha'之后,遇到了不包含在字符集中的“g”,所以也就停止了。
trim的逻辑是,从首尾开始,挨个字符遍历,如果字符在字符集中,则删除该字符并继续判断下一个字符,直到该字符不在字符集为止。
由于你指定的过滤字符集'?error=captcha'包含h、t、p三个字符,所以前边的http会被过滤,而字符集中不包含冒号,所以到了冒号就停止了。
后边正好过滤完'?error=captcha'之后,遇到了不包含在字符集中的“g”,所以也就停止了。
追问
非常感谢,只能采纳一个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$url="http://www.somesite.com/something/something?error=captcha";
print trim($url,'ha');
print "\n";
print preg_replace('/^[ha]+|[ha]+$/','',$url);
#结果
ttp://www.somesite.com/something/something?error=captc
ttp://www.somesite.com/something/something?error=captc
其实你可以这样理解,删除开头或者结尾包含[ha]的字符
用正则理解的话大概就是这样
追问
非常感谢,只能采纳一个
我太嫩了,我把rtrim换成了preg_replace('/ha$/','',$url);
再次感谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询