wufeng
V2EX  ›  问与答

这 PHP 代码 我哪里错了?

  •  
  •   wufeng · May 5, 2019 · 3226 views
    This topic created in 2747 days ago, the information mentioned may be changed or developed.

    $str=ltrim("852546","852"); echo $str;

    我设想是 去除前面的 852 但结果是去除了 8525

    15 replies  •  2019-05-05 15:18:58 +08:00
    maichael
    maichael
    May 5, 2019
    2
    第二个参数是一个“字符集”,不是一个“字符串”。
    Telegram
    Telegram
    May 5, 2019
    3
    同好奇
    leadfast
    leadfast
    May 5, 2019
    4
    同好奇+1
    donething
    donething
    May 5, 2019 via Android
    5
    不懂
    haiyang416
    haiyang416
    May 5, 2019
    6
    去掉固定字符串可以用 str_replace。
    haiyang416
    haiyang416
    May 5, 2019
    7
    trim 函数的第二个参数可以理解为正则里面的 [852]。
    nazor
    nazor
    May 5, 2019
    8
    去掉前面的所有的 8,5,2 所以会去掉两个 5
    NjcyNzMzNDQ3
    NjcyNzMzNDQ3
    May 5, 2019
    10
    有趣的问题,代替方案例如 substr/preg_repalce/str_replace 皆可。


    原因是如二楼所说,ltrim 的第二个参数去掉的二楼说的字符集(即 ASCII )码。
    例子来自 php 文档:
    // trim the ASCII control characters at the beginning of $binary
    // (from 0 to 31 inclusive)
    $clean = ltrim($binary, "\x00..\x1F");


    str_replace 的第二个参数类型是:@param mixed $replace
    ltrim 的第二个参数类型是:@param string $character_mask
    tongz
    tongz
    May 5, 2019
    11
    >>> trim('852546245258', '852');
    => "4624"
    wufeng
    wufeng
    OP
    May 5, 2019
    12
    理解了 我以为是字符串
    现在用 str_replace 代替了
    juneszh
    juneszh
    May 5, 2019
    13
    看看 document 就能找到答案。。。
    NjcyNzMzNDQ3
    NjcyNzMzNDQ3
    May 5, 2019
    14
    @wufeng 用 preg_replace 吧,你用的 ltrim 说明你要替换开头的字符,str_replace 所有位置都会被替换的。
    supuwoerc
    supuwoerc
    May 5, 2019
    15
    试试 str_replace
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4981 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 02:17 · PVG 10:17 · LAX 18:17 · JFK 21:17
    ♥ Do have faith in what you're doing.