【问题标题】:php trim(), work poorlyphp trim(),效果不佳
【发布时间】:2012-02-26 00:22:14
【问题描述】:

我需要从页面 url www 中删除。使用 php trim() 函数。 但是这个函数cut和首字母,为什么呢?

$domain = parse_url('http://wordpresas.com/page/1');
$domain['host'] = trim($domain['host'], 'www.');
pr($domain['host']); //ordpresas.com

【问题讨论】:

  • trim() 工作正常。您的代码效果不佳
  • 嘿,有趣。 trim() 的第二个参数确实是一个字符列表,所以该列表中的任何字符都会被截断。没有意识到这一点。 (不过,这是设计使然。你需要一个不同的功能来做你需要的。)

标签: php trim


【解决方案1】:

正如其他人所说,trim() 的第二个参数包含被修剪的a list of characters

但是,您可以为此使用preg_replace()。如果字符串以它开头,这将确保只有 www. 会被剥离。

preg_replace('/^www./', '', $domain['host']);

【讨论】:

  • 不确定谁对你投了反对票。虽然preg_replace 在这种情况下可能有点矫枉过正,但它是一个完全有效的答案......祝你均衡+1 好先生!
  • @Leigh 这是最干净的选项恕我直言。 (可读性)。我认为投反对票的人认为:但是但是考虑一下性能。无知是一种幸福:P
  • 不是一个简单的str_replace('www.','',$domain['host']) 也能正常工作吗?不需要正则表达式...?
  • @Nick 不,那是行不通的。它可能剥离太多。 www.examplewww.com 将导致:example.com
【解决方案2】:

最有效的方法可能是:

if( strncmp( 'www.', $domain['host'], 4) == 0){
    $domain['host'] = substr( $domain['host'], 4);
}

它应该具有复杂性O(1) :)

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2016-11-21
    • 1970-01-01
    相关资源
    最近更新 更多