Sind das drei separate Zeichenfolgen oder eine Zeichenfolge mit Zeilenumbrüchen, die jede Zahl trennen? Beim Bearbeiten Ihrer Frage ist mir aufgefallen, dass Sie <br>Tags haben, die die Zahlen trennen. Sind sie tatsächlich Teil Ihrer Saite?
Vorsichtsmaßnahme $ str: = '0'. In meiner Antwort angesprochen, basierend auf dieser Antwort.
Mike Weir
Warum überkomplizieren? und mike es ist $ str + = 0; wie hier erklärt: nabtron.com/kiss-code
Nabeel Khan
@NabeelKhan Das würde die Frage nicht beantworten, die nicht fragt, ob die Zeichenfolge in eine Ganzzahl konvertiert werden soll. In den Kommentaren zu Svisstacks Antwort erfahren Sie, warum dies keine so gute Lösung ist.
einsamer
@lonesomeday sollten Sie seine Frage sorgfältig lesen, wo er erwähnt: "Beachten Sie, dass die obige Zahl zufällig generiert wurde." also sind sie schon ganze Zahlen :)
Ich habe gerade eine (int) "00009384783473"(Zufallszahl) ausprobiert und mein Ergebnis war 2147483647. Wenn ich sie jedoch als Float gieße, scheint sie in Ordnung zu funktionieren. Seltsam
JamesHalsall
Handbuch sagt, dass "Die Größe einer Ganzzahl plattformabhängig ist, obwohl ein Maximalwert von etwa zwei Milliarden der übliche Wert ist (das sind 32 Bit signiert)"
llamerr
1
Nicht seltsam. Ganzzahlen in PHP gehen bis zu 2 ^ 31, was 2147483647 ist. Für größere Zahlen müssen Sie die stringbasierte Lösung von lonesomeday verwenden.
awm
1
Das Casting in Float scheint zu funktionieren, aber irgendwann werden Rundungsfehler angezeigt.
awm
1
Wie wäre es mit der Idee, jede Zeichenfolge mithilfe einer Schleifenanweisung auszuwerten? Wenn eine Ziffer ungleich Null (oder eine Zeichenfolge) erreicht wird, wird der Index dieser Ziffer abgerufen und alle vorhergehenden Nullen gelöscht. Anschließend wird die beginnende Zeichenfolge wiedergegeben mit dem ersten Wert ungleich Null ..
Gerald
10
Ich weiß nicht, warum Menschen so komplexe Methoden anwenden, um so etwas Einfaches zu erreichen! Und Regex? Beeindruckend!
Dies scheint eine einfachere Lösung zu sein, behandelt jedoch keine Zeichenfolgengröße wie andere Antworten. Sie konvertieren von einer Zeichenfolge in eine Ganzzahl und dann als Zeichenfolge zurück - einfacher, die Zeichenfolge lediglich zu verkürzen.
Mike Weir
1
Interessant, aber ich weiß nicht, ob es die beste Lösung für die Typkonvertierungen ist.
Jonathanbell
1
Bitte tu das nicht ... deshalb bekommt PHP einen schlechten Ruf
Dan F.
9
Ähnlich wie bei einem anderen Vorschlag, außer dass die tatsächliche Null nicht ausgelöscht wird:
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.
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.
<br>
Tags haben, die die Zahlen trennen. Sind sie tatsächlich Teil Ihrer Saite?Antworten:
ltrim
::quelle
quelle
(int) "00009384783473"
(Zufallszahl) ausprobiert und mein Ergebnis war 2147483647. Wenn ich sie jedoch als Float gieße, scheint sie in Ordnung zu funktionieren. SeltsamIch 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/ ):
quelle
Ähnlich wie bei einem anderen Vorschlag, außer dass die tatsächliche Null nicht ausgelöscht wird:
Oder wie vorgeschlagen (ab PHP 5.3), kann ein ternärer Kurzoperator verwendet werden:
quelle
$str = ltrim($str, '0') ?: '0';
- kein redundanter Trimmanruf.Sie können "+" in Ihre Variable einfügen,
Beispiel:
quelle
Regex wurde bereits vorgeschlagen, aber nicht richtig:
Ausgabe ist dann:
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.quelle
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.
quelle
Ich bin auf diese Weise behoben.
es ist sehr einfach. Übergeben Sie nur eine Zeichenfolge, deren Nullpunkt am Anfang der Zeichenfolge liegt.
quelle
Ajay Kumar bietet das einfachste Echo + $ numString; Ich benutze diese:
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.
quelle
Angenommen, Sie möchten, dass ein Nachlauf von drei oder mehr Nullen entfernt wird und Ihr Beispiel eine Zeichenfolge ist:
Sie können das Regex-Muster an Ihre Bedürfnisse anpassen, wenn meine Annahmen nicht stimmen.
Diese Hilfe?
quelle