I'm trying to replace only the first character of a string, but it isn't working, it replaces all the "0" on the string, here's my code:
$mes2 = str_replace('0', '', $mes[0]);
I want to replace the first character only if its a 0, example:
07 becomes 7
I don't want to replace all the time, example:
11 becomes 1, i don't want it.
I also tried this way, but it didn't work the way i want, because it's replacing also the second character if it's 0, like 10 becomes 1.
$mes2 = preg_replace('/0/', '', $mes, 1);
OK, based on refinements to your question, what you probably want is ltrim
.
$out = ltrim($in, "0");
This will strip all leading zeroes from $in
. It won't remove zeroes from anywhere else, and it won't remove anything other than zeroes. Be careful; if you give it "000" you'll get back "" instead of "0".
You could use typecasting instead, as long as $in
is always a number (or you want it to result in 0 if it isn't):
$out = (int) $in;
...etc.
Now, in the unlikely event that you only want to replace the first 0 , so for example "007" becomes "07", then your latest attempt mentioned in your question is almost there. You just need to add a "caret" character to make sure it only matches the start of the string:
$out = preg_replace('/^0/', '', $in);
Use substr
:
$mes2 = substr($mes, 1);
This will remove the first character, which is what it looks like you're trying to achieve. If you want to replace it with something, use this:
$mes2 = $new_char . substr($mes, 1);
I may have misread your question - if $mes[0]
is the original string, use $mes[0]
in place of $mes
above.
$str = '1ere is the solution';
echo preg_replace('/1/', 'h', $str, 1); // outputs 'here is the solution'
Strings in PHP can be accessed just like array
<?php
$var = "test";
$var[0] = "1";
var_dump($var);
?>
Will output string(4) "1est"
You may simple use $mes[0] = '';
or if you need specific substitution something like $mes[0] = $mes[0] == '<replaced character>' ? '' : $mes[0];
$mes[0] = $mes[0] == '<replaced character>' ? '' : $mes[0];
My long approach:
$first_letter = substr($mes[0], 0, 1);
$rest = substr($mes[0], 1);
$mes2 = str_replace('0', '', $first_letter);
$result = $mes2.$rest;
Or shorter:
$result = str_replace('0', '', substr($mes[0], 0, 1)).substr($mes[0], 1);
这就是我会这样做的方式:
$mes2 = substr_replace($mes[0],'',strpos($mes[0], '0'),1);
You could do that like this:
$mes2 = "07 test subject";
if($mes2['0']=='0') { $mes2['0']=''; }
echo $mes2;
This will output:
7 test subject
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.