【问题标题】:Removing first slash character from string PHP [closed]从字符串PHP中删除第一个斜杠字符[关闭]
【发布时间】:2012-09-12 11:09:35
【问题描述】:

我有一个这种格式的字符串/abcd-efg-sms-3-topper-2

我想从中删除第一个 / 字符。

我知道我可以使用substr() 函数删除它,但我不想使用它,因为我首先必须检查第一个字符是否是斜线。有没有其他方法可以删除斜线,而无需先检查斜线,并让这种方式具有合理的性能(即避免复杂的正则表达式)?

【问题讨论】:

  • 是的,阅读这个问题会引发关于它的提问:您关心哪种更快?还有:为什么更快?你真的认为你对这 20 个左右的字符串有速度问题吗?
  • 是的,因为我的数据库很大,而且我的页面需要时间来加载所有内容,这就是为什么我希望这些函数的响应速度更快。
  • 这行代码有什么大数据库?你真的衡量过你的网站需要这么长时间吗?你写这个的方式听起来有点像,你实际上一无所知,并且你在错误的一端“优化”,这与你试图实现的目标正好相反。看看实际需要多长时间,然后你可以询问速度关于那部分
  • 除此之外,substr 更快,并且您接受了错误的答案。但是正如所写的那样,您甚至没有注意到这一点,因为您只问而不关心速度。你自己举出最好的例子。
  • 有很多方法可以做到这一点。你为什么要另辟蹊径?你到底在寻找什么?你测试过性能吗?你为什么讨厌substr()?这个问题不能用一个“答案”来回答,所以我投票接近。

标签: php string performance trim


【解决方案1】:

使用修剪:

$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 checkout charlist 用于将其从字符串中删除;
  • 但是trim使用起来比substr最安全
  • 好吧,如果字符串没有/ 你的substr 会以任何方式删除第一个字符。 trim检查字符列表,并从字符串的边框(左,右或两者)中删除该字符,如果字符串没有搜索字符串,则不修改字符串。
  • 哪个更快取决于字符串的长度(通常完全不相关 - 通常如此)。
  • trim 也会删除多个斜杠,因此 trim('//foo/bar') 变为 'foo/bar' 这可能不是您想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多