用str_replace只替换字符串的第一个字符?

Vin*_*nny 4 php string str-replace

我试图只替换字符串的第一个字符,但它不起作用,它替换字符串上的所有"0",这是我的代码:

$mes2 = str_replace('0', '', $mes[0]);
Run Code Online (Sandbox Code Playgroud)

我想仅在其为0的情况下替换第一个字符,例如:

07变为7

我不想一直替换,例如:

11变成1,我不想要它.

我也尝试过这种方式,但它没有按照我想要的方式工作,因为如果它是0,它也会替换第二个字符,就像10变为1.

$mes2 = preg_replace('/0/', '', $mes, 1);
Run Code Online (Sandbox Code Playgroud)

Dou*_*ean 21

好的,根据你的问题的改进,你可能想要的是ltrim.

$out = ltrim($in, "0");
Run Code Online (Sandbox Code Playgroud)

这将剥离所有前导零$in.它不会从其他任何地方删除零,并且它不会删除除零之外的任何内容.小心; 如果你给它"000"你会得到""而不是"0".

您可以使用类型转换,只要$in它始终是一个数字(或者如果不是则希望它导致0):

$out = (int) $in;
Run Code Online (Sandbox Code Playgroud)
  • 007变为7
  • 000变为0
  • 100留100
  • 456保持456
  • 00a变为0
  • 56a变为0
  • ab4变为0
  • -007变为-7

...等等.

现在,万一你只想替换第一个0,所以例如"007"变成"07",那么你问题中提到的最新尝试几乎就在那里.您只需要添加一个"插入符号"字符,以确保它只匹配字符串的开头:

$out = preg_replace('/^0/', '', $in);
Run Code Online (Sandbox Code Playgroud)


Dou*_*ean 5

使用substr

$mes2 = substr($mes, 1);
Run Code Online (Sandbox Code Playgroud)

这将删除第一个字符,这就是您想要实现的样子。如果您想用某些东西替换它,请使用以下命令:

$mes2 = $new_char . substr($mes, 1);
Run Code Online (Sandbox Code Playgroud)

编辑

我可能误读了您的问题 - 如果$mes[0]是原始字符串,请使用$mes[0]代替$mes上面的字符串。


cpu*_*rou 5

$str = '1ere is the solution';
echo preg_replace('/1/', 'h', $str, 1); // outputs 'here is the solution'
Run Code Online (Sandbox Code Playgroud)