Ich habe eine Eingabezeichenfolge wie:
$str=":this is a applepie :) ";
Wie kann ich das zuerst auftretende entfernen :
mit PHP?
Gewünschte Ausgabe: this is a applepie :)
Julia Chika
Ich habe eine Eingabezeichenfolge wie:
$str=":this is a applepie :) ";
Wie kann ich das zuerst auftretende entfernen :
mit PHP?
Gewünschte Ausgabe: this is a applepie :)
Mario
Die substr()
Funktion wird Ihnen hier wahrscheinlich helfen:
$str = substr($str, 1);
Strings werden beginnend bei 0 indiziert, und der zweite Parameter dieser Funktion übernimmt den Cutstart. Machen Sie das also zu 1, und das erste Zeichen ist weg.
Beachten Sie Unicode. Wenn Sie es mit einem beliebigen String zu tun haben (zB “Ål <- dänisch für Aal"), sollten Sie mb_substr verwenden und die Kodierung angeben.
– Thomas Jensen
17. Juni 2012 um 11:22 Uhr
Dies ist keine korrekte Implementierung, es funktioniert nicht mit der einzelnen Zeichenkette “a”. Wenn Sie eine einzelne Zeichenfolge versuchen, gibt substr einen booleschen Wert zurück
– anru
26. Oktober 2015 um 2:20 Uhr
@anru Das Handbuch gibt an, wenn die Zeichenfolgenlänge gleich dem Startparameter ist, wird eine leere Zeichenfolge zurückgegeben. Vor Version 7, false
wurde zurückgegeben. Sie müssten also prüfen, ob sie gleich sind, wenn dies nicht das gewünschte Verhalten ist.
– rybo111
15. Februar 2016 um 16:18 Uhr
Haim Evgi
Um alle zu entfernen :
vom Anfang einer Zeichenfolge können Sie verwenden ltrim:
$str="::f:o:";
$str = ltrim($str, ':');
var_dump($str); //=> 'f:o:'
Beachten Sie, dass lrtim alle entfernt :::::
. Manchmal ist dies ein unerwünschtes Verhalten.
– AdR
20. November 2013 um 14:02 Uhr
Beachten Sie, dass dies nur für einzelne Zeichen gedacht ist. ltrim schneidet alle Zeichen in der angegebenen Zeichenfolge ab: ltrim('prefixprefix_postfix', 'prefix')
ergibt sich '_postfix';
– Cody Django
5. April 2017 um 22:19 Uhr
“How to remove the first character of string in PHP” war die Frage und dieser Kommentar beantwortet sie nicht wirklich.
– Lukas
8. September 2020 um 13:00 Uhr
Verwenden Substr:
$str = substr($str, 1); // this is a applepie :)
Hayenn
Ausführungszeit für die 3 Antworten:
Entfernen Sie den ersten Buchstaben, indem Sie den Fall ersetzen
$str = "hello";
$str[0] = "";
// $str[0] = false;
// $str[0] = null;
// replaced by �, but ok for echo
Ausführungszeit für 1.000.000 Tests: 0.39602184295654
Sek
Entfernen Sie den ersten Buchstaben mit substr()
$str = "hello";
$str = substr($str, 1);
Ausführungszeit für 1.000.000 Tests: 5.153294801712
Sek
Entfernen Sie den ersten Buchstaben mit ltrim()
$str = "hello";
$str= ltrim ($str,'h');
Ausführungszeit für 1.000.000 Tests: 5.2393000125885
Sek
Entfernen Sie den ersten Buchstaben mit preg_replace()
$str = "hello";
$str = preg_replace('/^./', '', $str);
Ausführungszeit für 1.000.000 Tests: 6.8543920516968
Sek
Die akzeptierte Antwort:
$str = ltrim($str, ':');
funktioniert, wird aber mehrere entfernen :
wenn mehrere am Start sind.
$str = substr($str, 1);
wird jedes Zeichen von Anfang an entfernen.
Aber,
if ($str[0] === ':')
$str = substr($str, 1);
funktioniert perfekt.
$str = substr($str, 1);
Sehen PHP-Handbuchbeispiel 3
echo substr('abcdef', 1); // bcdef
Notiz:
unset($str[0])
wird nicht funktionieren da Sie einen Teil einer Zeichenfolge nicht zurücksetzen können: –
Fatal error: Cannot unset string offsets
Nach weiteren Tests empfehle ich die Verwendung nicht mehr. Es verursachte ein Problem für mich, als ich die aktualisierte Zeichenfolge in einer MySQL-Abfrage verwendete und zu wechselte substr
das Problem behoben. Ich habe darüber nachgedacht, diese Antwort zu löschen, aber Kommentare deuten darauf hin, dass sie irgendwie schneller ist, sodass jemand sie verwenden könnte. Möglicherweise werden Sie feststellen, dass das Trimmen der aktualisierten Zeichenfolge Probleme mit der Zeichenfolgenlänge löst.
Manchmal braucht man keine Funktion:
$str[0] = '';
Zum Beispiel:
$str="AHello";
$str[0] = '';
echo $str; // 'Hello'
Diese Methode ändert die vorhandene Zeichenfolge, anstatt eine neue zu erstellen.
Das scheint auch schneller zu gehen.
– Emanuil Russew
16. Januar 2014 um 19:21 Uhr
@EmanuilRusev wie so? Nur neugierig, ob Sie meinen, es ist schneller zu tippen oder es läuft schneller.
– rybo111
16. Januar 2014 um 23:27 Uhr
Damit muss man vorsichtig sein. Der folgende Code gibt bool(false) aus. $foo = ‘Buch’; $bar = ‘Buch’; $bar = substr($bar, 1); $fu[0] = ”; var_dump($foo === $bar);
– Gedankenrepo
12. März 2014 um 17:16 Uhr
Das erste Zeichen wird dadurch nicht entfernt. Es ersetzt es durch ein nicht druckbares chr(0)
. Es ist gleichbedeutend mit $str[0] = chr(0);
. Sie können den Zeichenfolgencode mit überprüfen var_dump(bin2hex($str));
Sie erhalten 0048656c6c6f
. Sehen Sie das zuerst 00
Byte?
– Paul Spiegel
17. Mai 2018 um 7:31 Uhr
es ist dann 17,61 % schneller substr($str, 1)
– OzzyCzech
10. Dezember 2020 um 10:02 Uhr
mögliches Duplikat von PHP Subtract First Character of String
– Gordon
9. Januar 2011 um 11:48 Uhr
mögliches Duplikat von Entfernen Sie die ersten 4 Zeichen einer Zeichenfolge php
– Gordon
9. Januar 2011 um 11:48 Uhr