web-dev-qa-db-fra.com

Comment supprimer tous les zéros de début d'une chaîne

Si j'ai une ficelle

00020300504
00000234892839
000239074

comment puis-je me débarrasser des zéros de tête pour que je ne dispose que de cette

20300504
234892839
239074

notez que le nombre ci-dessus a été généré aléatoirement.

138
Gerald

ltrim :

$str = ltrim($str, '0');
409
lonesomeday

Je ne sais pas pourquoi les gens utilisent des méthodes si complexes pour réaliser une chose aussi simple! Et regex? Hou la la!

Voilà, le moyen le plus simple et le plus simple (comme expliqué ici: https://nabtron.com/kiss-code/ ):

$a = '000000000000001';
$a += 0;

echo $a; // will output 1
10
Nabeel Khan
(string)((int)"00000234892839")
10
Svisstack

Semblable à une autre suggestion, mais n'effacera pas le zéro réel:

if (ltrim($str, '0') != '') {
    $str = ltrim($str, '0');
} else {
    $str = '0';
}
8
Mike Weir

vous pouvez ajouter "+" dans votre variable,

exemple :

$numString = "0000001123000";
echo +$numString;
5
Anthony Kal

Regex a déjà été proposé, mais pas correctement:

<?php
    $number = '00000004523423400023402340240';
    $withoutLeadingZeroes = preg_replace('/^0+/', $number)
    echo $withoutLeadingZeroes;
?>

la sortie est alors:

4523423400023402340240

Arrière-plan sur Regex: Le ^ indique le début de la chaîne et le signe + signale plus ou aucun des signes précédents Par conséquent, l'expression régulière ^0+ correspond à tous les zéros au début d'une chaîne.

3
Fuujin

Je ne pense pas que preg_replace soit la solution .. Vieux fil, mais il se trouve que vous cherchez ceci aujourd'hui ltrim et (int) casting sont les gagnants.

<?php
 $numString = "0000001123000";
 $actualInt = "1123000";

 $fixed_str1 = preg_replace('/000+/','',$numString);
 $fixed_str2 = ltrim($numString, '0');
 $fixed_str3 = (int)$numString;

 echo $numString . " Original";
 echo "<br>"; 
 echo $fixed_str1 . " Fix1";
 echo "<br>"; 
 echo $fixed_str2 . " Fix2";
 echo "<br>";
 echo $fixed_str3 . " Fix3";
 echo "<br>";
 echo $actualInt . " Actual integer in string";

 //output

 0000001123000 Origina
 1123 Fix1
 1123000 Fix2
 1123000 Fix3
 1123000 Actual integer in tring
2
Elcast

Im fixe avec cette façon.

c'est très simple. ne passe qu'une chaîne à son zéro nul début de chaîne.

function removeZeroString($str='')
{
    while(trim(substr($str,0,1)) === '0')
    {
        $str = ltrim($str,'0');
    }
    return $str;
}
0
Ali Sufyan