从PHP字符串中删除第一个斜杠字符

11
我有一个字符串,格式为/abcd-efg-sms-3-topper-2,我想要删除这个字符串开头的/字符。虽然我知道可以使用 substr() 函数来删除字符串的第一个字符,但是我不想做这个检查,因为我需要先确认第一个字符是否是斜杠。请问是否有其他方法可以删除斜杠,并且在性能上表现良好(避免使用复杂的正则表达式)?

是的,阅读问题会引发对它的提问:您关心哪种类型的速度?还有:为什么要更快?您真的认为您在处理那个长度约为20个字符的字符串时存在速度问题吗? - hakre
是的,因为我有一个大型数据库,我的页面需要加载所有内容,所以我希望这些函数能够更快地响应。 - Yogesh Suthar
1
这个代码行与大型数据库有什么关系?你是否实际测量过网站哪些部分需要更长时间?你的写法听起来有点像你其实不知道,而你正在对错误的地方进行“优化”,这恰恰是你想要实现的相反效果。看看实际上需要花费更长时间的部分,然后你可以针对该部分询问速度。 - hakre
1
除此之外,substr 更快,并且您已经接受了错误的答案。但是,就目前而言,您甚至没有注意到这一点,因为您只是在询问,而不关心速度。您提供最好的例子是您自己的。 - hakre
有很多种方法可以做到这一点。你为什么要寻找另一种方法?你具体在寻找什么?你测试过性能吗?你为什么讨厌 substr() 函数?这个问题不能用一个简单的“答案”来回答,所以我要投票关闭它。 - PeeHaa
1个回答

34

使用 trim:

$string = '/abcd-efg-sms-3-topper-2';
echo ltrim($string, '/');
// abcd-efg-sms-3-topper-2
echo rtrim($string, '/');
// /abcd-efg-sms-3-topper-2
echo trim($string, '/');
// abcd-efg-sms-3-topper-2

好的,substr 更快,它只是截取字符串。trim 检查 charlist 并将其从字符串中删除; - Sergey
但是相比于 substr,使用 trim 更加安全。 - Sergey
如果字符串中没有 /,那么您的 substr 函数无论如何都会删除第一个字符。trim 函数检查字符列表,并从字符串的边界(左、右或两者)删除这些字符,如果字符串中没有搜索字符串,则不会修改字符串。 - Sergey
1
哪个更快取决于字符串的长度(通常毫无关系 - 像往常一样)。 - hakre
4
trim函数也会删除多余的斜杠,所以trim('//foo/bar')将变成'foo/bar',这可能不是你想要的结果。 - Timo Huovinen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接