Antworten:
ltrim
::
$str = ltrim($str, '0');
(string)((int)"00000234892839")
(int) "00009384783473"
(Zufallszahl) ausprobiert und mein Ergebnis war 2147483647. Wenn ich sie jedoch als Float gieße, scheint sie in Ordnung zu funktionieren. Seltsam
Ich weiß nicht, warum Menschen so komplexe Methoden anwenden, um so etwas Einfaches zu erreichen! Und Regex? Beeindruckend!
Los geht's, der einfachste und einfachste Weg (wie hier erklärt: https://nabtron.com/kiss-code/ ):
$a = '000000000000001';
$a += 0;
echo $a; // will output 1
Ähnlich wie bei einem anderen Vorschlag, außer dass die tatsächliche Null nicht ausgelöscht wird:
if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}
Oder wie vorgeschlagen (ab PHP 5.3), kann ein ternärer Kurzoperator verwendet werden:
$str = ltrim($str, '0') ?: '0';
$str = ltrim($str, '0') ?: '0';
- kein redundanter Trimmanruf.
Sie können "+" in Ihre Variable einfügen,
Beispiel:
$numString = "0000001123000";
echo +$numString;
Regex wurde bereits vorgeschlagen, aber nicht richtig:
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>
Ausgabe ist dann:
4523423400023402340240
Hintergrund auf Regex: Die ^
Signale, die am Anfang der Zeichenfolge beginnen, und das +
Zeichen signalisieren mehr oder gar kein vorhergehendes Zeichen. Daher ^0+
stimmt der reguläre Ausdruck mit allen Nullen am Anfang einer Zeichenfolge überein.
preg_replace() expects at least 3 parameters, 2 given
Ich denke nicht, dass preg_replace die Antwort ist. Alter Thread, aber ich suche heute einfach danach. ltrim und (int) Casting ist der Gewinner.
<?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
Ich bin auf diese Weise behoben.
es ist sehr einfach. Übergeben Sie nur eine Zeichenfolge, deren Nullpunkt am Anfang der Zeichenfolge liegt.
function removeZeroString($str='')
{
while(trim(substr($str,0,1)) === '0')
{
$str = ltrim($str,'0');
}
return $str;
}
Ajay Kumar bietet das einfachste Echo + $ numString; Ich benutze diese:
echo round($val = "0005");
echo $val = 0005;
//both output 5
echo round($val = 00000648370000075845);
echo round($val = "00000648370000075845");
//output 648370000075845, no need to care about the other zeroes in the number
//like with regex or comparative functions. Works w/wo single/double quotes
Tatsächlich nimmt jede mathematische Funktion die Zahl aus dem "String" und behandelt sie so. Es ist viel einfacher als alle regulären Ausdrücke oder Vergleichsfunktionen. Ich habe das in php.net gesehen, weiß nicht mehr wo.
Angenommen, Sie möchten, dass ein Nachlauf von drei oder mehr Nullen entfernt wird und Ihr Beispiel eine Zeichenfolge ist:
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);
Sie können das Regex-Muster an Ihre Bedürfnisse anpassen, wenn meine Annahmen nicht stimmen.
Diese Hilfe?
<br>
Tags haben, die die Zahlen trennen. Sind sie tatsächlich Teil Ihrer Saite?