Wie entferne ich das führende Zeichen aus einer Zeichenfolge?

Lesezeit: 1 Minute

Wie entferne ich das fuhrende Zeichen aus einer Zeichenfolge
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 :)

  • 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

Wie entferne ich das fuhrende Zeichen aus einer Zeichenfolge
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


1647901451 405 Wie entferne ich das fuhrende Zeichen aus einer Zeichenfolge
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 :)

1647901451 979 Wie entferne ich das fuhrende Zeichen aus einer Zeichenfolge
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

Aktualisieren

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

1005420cookie-checkWie entferne ich das führende Zeichen aus einer Zeichenfolge?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy