Beachten Sie, dass lrtim alle entfernt :::::. Manchmal ist dies kein gewünschtes Verhalten.
AdR
5
Beachten Sie, dass dies nur für einzelne Zeichen vorgesehen ist. ltrim schneidet alle Zeichen in der bereitgestellten Zeichenfolge: ltrim('prefixprefix_postfix', 'prefix')Ergebnisse in'_postfix';
Cody Django
556
Die substr()Funktion wird Ihnen hier wahrscheinlich helfen:
$str = substr($str,1);
Strings werden ab 0 indiziert, und dieser zweite Parameter der Funktion übernimmt den Cutstart. Machen Sie also diese 1, und das erste Zeichen ist weg.
Achten Sie auf Unicode. Wenn Sie mit einer beliebigen Zeichenfolge arbeiten (z. B. "Ål <- dänisch für Aal"), sollten Sie mb_substr verwenden und die Codierung angeben.
Thomas Jensen
Dies ist keine korrekte Implementierung, sie funktioniert nicht mit einer einzelnen Zeichenfolge "a". Wenn Sie eine einzelne Zeichenfolge versuchen, gibt substr einen booleschen Wert zurück
bis zum
2
@anru Das Handbuch gibt an, dass eine leere Zeichenfolge zurückgegeben wird, wenn die Zeichenfolgenlänge dem Startparameter entspricht. Vor Version 7 falsewurde zurückgegeben. Sie müssten also überprüfen, ob sie gleich sind, wenn dies nicht das gewünschte Verhalten ist.
Vielen Dank. Siehe mein Update. Es hat ein Problem für mich verursacht, wenn ich die aktualisierte Zeichenfolge in einer SQL-Abfrage verwendet habe.
Rybo111
6
Ich habe gerade die $str[0] = '';Lösung ausprobiert und es hat nicht funktioniert. Nun, es funktioniert jedoch, wenn Sie dann vorhaben, die Variable zum Vergleichen zu verwenden, >oder <es funktioniert nicht. Es zählt zum Beispiel immer noch als + $str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
Ian
@Ian: Ich bin beim Abrufen von Datensätzen von einer API mit einem Schlüsselwort auf dasselbe Problem gestoßen. Es wurde versucht var_dump($keyword), die vorherige Zeichenlänge anzuzeigen . Dann habe ich versucht, das Schlüsselwort zu kürzen, und dann hat es gut funktioniert var_dump(trim($keyword)). Ich hoffe, das hilft jemandem. :)
Syed Qarib
3
Das funktioniert nicht. Die Position "entfernt" wird durch ein Null-Byte ersetzt, sodass Sie "\ 0hello" anstelle von "hallo" erhalten.
Josef Kufner
1
Ich erhalte die Meldung "Warnung: Einem String-Offset kann keine leere Zeichenfolge zugewiesen werden" für $ str [0] = "";
Nach weiteren Tests empfehle ich die Verwendung nicht mehr. Es hat ein Problem für mich verursacht, als ich die aktualisierte Zeichenfolge in einer MySQL-Abfrage verwendet und substrdas Problem behoben habe. Ich habe darüber nachgedacht, diese Antwort zu löschen, aber Kommentare deuten darauf hin, dass sie irgendwie schneller ist, sodass jemand eine Verwendung dafür haben könnte. Möglicherweise werden beim Trimmen der aktualisierten Zeichenfolge Probleme mit der Zeichenfolgenlänge behoben.
Manchmal brauchen Sie keine Funktion:
$str[0]='';
Beispielsweise:
$str ='AHello';
$str[0]='';
echo $str;// 'Hello'
Diese Methode ändert die vorhandene Zeichenfolge, anstatt eine andere zu erstellen.
@EmanuilRusev wie so? Nur neugierig, ob Sie meinen, es ist schneller zu tippen oder es läuft schneller.
Rybo111
Ich meine, dass es schneller läuft.
Emanuil Rusev
@EmanuilRusev Es würde mich interessieren, ob Sie einige Statistiken bereitstellen könnten, die ich der Antwort hinzufügen werde.
Rybo111
1
Ich muss vorsichtig damit sein. Der folgende Code gibt bool (false) aus. $ foo = 'Buch'; $ bar = 'Buch'; $ bar = substr ($ bar, 1); $ foo [0] = ''; var_dump ($ foo === $ bar);
Gedankenrepo
8
Die akzeptierte Antwort:
$str = ltrim($str,':');
funktioniert, entfernt jedoch mehrere, :wenn zu Beginn mehr als eine vorhanden ist.
Trimmt das Vorkommen jedes Wortes in einem Array vom Anfang und Ende einer Zeichenfolge + Leerzeichen und optional zusätzliche Einzelzeichen gemäß normalem Trimmen ().
<?php
function trim_words($what, $words, $char_list =''){if(!is_array($words))returnfalse;
$char_list .=" \t\n\r\0\x0B";// default trim chars
$pattern ="(".implode("|", array_map('preg_quote', $words)).")\b";
$str = trim(preg_replace('~'.$pattern.'$~i','', preg_replace('~^'.$pattern.'~i','', trim($what, $char_list))), $char_list);return $str;}// for example:
$trim_list = array('AND','OR');
$what =' OR x = 1 AND b = 2 AND ';
print_r(trim_words($what, $trim_list));// => "x = 1 AND b = 2"
$what =' ORDER BY x DESC, b ASC, ';
print_r(trim_words($what, $trim_list,','));// => "ORDER BY x DESC, b ASC"?>
Dieser arbeitet nicht mit einer einzelnen Zeichenkette: wie "a"
bis
Sie haben Recht =) Glauben Sie also, dass eine mögliche Lösung darin besteht, zu testen, bevor es nur ein Zeichen enthält. Zum Beispiel: $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): $ str; Oder $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): ''; weil die Idee ist, das letzte Zeichen zu entfernen, wenn Sie nur eines haben ...: P
Antworten:
Um alle Zeichen
:
vom Anfang eines Strings zu entfernen , können Sie ltrim verwenden :quelle
:::::
. Manchmal ist dies kein gewünschtes Verhalten.ltrim('prefixprefix_postfix', 'prefix')
Ergebnisse in'_postfix';
Die
substr()
Funktion wird Ihnen hier wahrscheinlich helfen:Strings werden ab 0 indiziert, und dieser zweite Parameter der Funktion übernimmt den Cutstart. Machen Sie also diese 1, und das erste Zeichen ist weg.
quelle
false
wurde zurückgegeben. Sie müssten also überprüfen, ob sie gleich sind, wenn dies nicht das gewünschte Verhalten ist.Verwenden Sie substr :
quelle
Ausführungszeit für die 3 Antworten:
Entfernen Sie den ersten Buchstaben, indem Sie das Gehäuse ersetzen
Ausführungszeit für 1.000.000 Tests:
0.39602184295654
SekEntfernen Sie den ersten Buchstaben mit substr ()
Ausführungszeit für 1.000.000 Tests:
5.153294801712
SekEntfernen Sie den ersten Buchstaben mit ltrim ()
Ausführungszeit für 1.000.000 Tests:
5.2393000125885
SekEntfernen Sie den ersten Buchstaben mit preg_replace ()
Ausführungszeit für 1.000.000 Tests:
6.8543920516968
Sekquelle
$str[0] = '';
Lösung ausprobiert und es hat nicht funktioniert. Nun, es funktioniert jedoch, wenn Sie dann vorhaben, die Variable zum Vergleichen zu verwenden,>
oder<
es funktioniert nicht. Es zählt zum Beispiel immer noch als +$str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
var_dump($keyword)
, die vorherige Zeichenlänge anzuzeigen . Dann habe ich versucht, das Schlüsselwort zu kürzen, und dann hat es gut funktioniertvar_dump(trim($keyword))
. Ich hoffe, das hilft jemandem. :)Hier ist der Code
Ausgabe:
quelle
Um das erste Zeichen der Zeichenfolge in PHP zu entfernen,
quelle
Siehe PHP-Handbuch Beispiel 3
Hinweis:
funktioniert nicht, da Sie einen Teil einer Zeichenfolge nicht deaktivieren können: -
quelle
Aktualisieren
Nach weiteren Tests empfehle ich die Verwendung nicht mehr. Es hat ein Problem für mich verursacht, als ich die aktualisierte Zeichenfolge in einer MySQL-Abfrage verwendet und
substr
das Problem behoben habe. Ich habe darüber nachgedacht, diese Antwort zu löschen, aber Kommentare deuten darauf hin, dass sie irgendwie schneller ist, sodass jemand eine Verwendung dafür haben könnte. Möglicherweise werden beim Trimmen der aktualisierten Zeichenfolge Probleme mit der Zeichenfolgenlänge behoben.Manchmal brauchen Sie keine Funktion:
Beispielsweise:
Diese Methode ändert die vorhandene Zeichenfolge, anstatt eine andere zu erstellen.
quelle
Die akzeptierte Antwort:
funktioniert, entfernt jedoch mehrere,
:
wenn zu Beginn mehr als eine vorhanden ist.entfernt jedes Zeichen von Anfang an.
Jedoch,
funktioniert perfekt.
quelle
Sie können die Funktion sbstr () verwenden
quelle
Trimmt das Vorkommen jedes Wortes in einem Array vom Anfang und Ende einer Zeichenfolge + Leerzeichen und optional zusätzliche Einzelzeichen gemäß normalem Trimmen ().
quelle
Der Code funktioniert gut für mich.
Vielleicht tragen Sie auch mit Antworten bei.
quelle
Verwenden Sie die Funktion mb_substr
quelle