Stack Overflow Asked by Vinny on November 4, 2021
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);
Answered by Doug McLean on November 4, 2021
$str = '1ere is the solution';
echo preg_replace('/1/', 'h', $str, 1); // outputs 'here is the solution'
Answered by cpugourou on November 4, 2021
You could do that like this:
$mes2 = "07 test subject";
if($mes2['0']=='0') { $mes2['0']=''; }
echo $mes2;
This will output:
7 test subject
Answered by mandza on November 4, 2021
This is how I would have done it:
$mes2 = substr_replace($mes[0],'',strpos($mes[0], '0'),1);
Answered by Pello on November 4, 2021
Strings in PHP can be accessed just like array
<?php
$var = "test";
$var[0] = "1";
var_dump($var);
?>
Will output string(4) "1est"
Answered by Azenis on November 4, 2021
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);
Answered by Standej on November 4, 2021
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.
Answered by Doug McLean on November 4, 2021
You may simple use $mes[0] = '';
or if you need specific substitution something like $mes[0] = $mes[0] == '<replaced character>' ? '' : $mes[0];
Answered by max on November 4, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP