Ich muss das letzte Zeichen einer Zeichenfolge abrufen. Angenommen, ich habe "Tester" als Eingabezeichenfolge und möchte, dass das Ergebnis "s" ist. Wie kann ich das in PHP machen?Wie bekomme ich das letzte Zeichen einer Zeichenkette in PHP?
Antwort
substr("testers", -1); // returns "s"
Wenn Sie Multibyte-Zeichencodierungen wie UTF-8 verwenden, verwenden Sie' mb_substr' (http://php.net/ mb_substr) statt. – Gumbo
so viel für meine substr ($ string, strlen ($ string) -1, 1) ;. Es scheint, ich habe den langen Weg genommen! – jeffkee
Sie benötigen nur Multibyte-String-Funktionen, wenn die Zeichenfolge als binäre Zeichenfolge ausgewertet wird. Aka, wenn PHP die Codierung nicht kennt. Ansonsten funktionieren die typischen Nicht-Multibyte-String-Funktionen gut. –
substr($string, -1)
Es gibt keine PHP-Funktion namens "substring", Sie erhalten einen Fehler, wenn Sie nicht Ihre eigene Teilzeichenfolgefunktion erstellt haben. Sollte "substr" sein. –
ahh du verderst den ganzen Witz. +8 Voting für die falsche Antwort sieht einfach toll aus :) –
duh ... ich meinte 'substr' natürlich – knittl
Oder von direct string access:
$string[strlen($string)-1];
Beachten Sie, dass dies nicht für Multibyte-Strings funktioniert. Wenn Sie mit Multibyte-String arbeiten müssen, sollten Sie die Verwendung von mb_*
string family of functions.
Ich mag diese C-Stil Antwort, ich frage mich, warum das nur diese paar Upvotes hat. –
@ValentinMercier: Da dies eine PHP-Frage ist, haben nicht C. –
@ValentinMercier ... und _only_ C-Programmierer einen _contest_ für verwirrenden Code! http://ioccc.org/ – Slashback
Denken Sie daran, wenn Sie eine Zeichenfolge haben, die als eine Linie aus einer Textdatei gelesen wurde mit der fgets()
Funktion, müssen Sie substr($string, -3, 1)
so bedienen, dass Sie die tatsächliche bekommen Zeichen und nicht Teil der CRLF (Carriage Return Line Feed).
Ich glaube nicht, dass die Person, die die Frage gestellt hat, diese benötigt, aber für mich hatte ich Probleme, das letzte Zeichen aus einer Zeichenfolge aus einer Textdatei zu bekommen, so dass andere ähnliche Probleme haben werden.
Ich kann keine Kommentare hinterlassen, aber in Bezug auf FastTrack's Antwort, auch daran denken, dass die Zeilenendung nur ein einzelnes Zeichen sein kann. Ich würde
substr(trim($string), -1)
EDIT vorschlagen:Mein Code unten von jemandem bearbeitet wurde, so dass es nicht tun, was ich angegeben. Ich habe meinen ursprünglichen Code wiederhergestellt und den Wortlaut geändert, um ihn klarer zu machen.
trim
(oder rtrim
) wird entfernen alle Leerzeichen, wenn Sie also für einen Raum, Reiter oder andere Leerzeichen überprüfen müssen, ersetzen Sie manuell die verschiedenen Zeilenenden zuerst:
$order = array("\r\n", "\n", "\r");
$string = str_replace($order, '', $string);
$lastchar = substr($string, -1);
I ‚d Beratung für Gordon-Lösung zu gehen, wie es performanter als substr() ist:
<?php
$string = 'abcdef';
$repetitions = 10000000;
echo "\n\n";
echo "----------------------------------\n";
echo $repetitions . " repetitions...\n";
echo "----------------------------------\n";
echo "\n\n";
$start = microtime(true);
for($i=0; $i<$repetitions; $i++)
$x = substr($string, -1);
echo "substr() took " . (microtime(true) - $start) . "seconds\n";
$start = microtime(true);
for($i=0; $i<$repetitions; $i++)
$x = $string[strlen($string)-1];
echo "array access took " . (microtime(true) - $start) . "seconds\n";
die();
gibt so etwas wie
----------------------------------
10000000 repetitions...
----------------------------------
substr() took 2.0285921096802seconds
array access took 1.7474739551544seconds
Dies sollte ein Kommentar zu Gordons Antwort sein. – Goose
Kann dies bestätigen. Je länger die Saite ist, desto größer ist der Leistungsunterschied. In meinem Test mit 10 Zeichen ist substr etwa 20% langsamer – Philipp
Nicht überraschend, da substr() hat den Overhead eines Funktionsaufrufs und der andere ist "C wie" direkte String-Manipulation. BTW Ich lief diesen Code auf PHP 7.1-Dev mit den Ergebnissen: substr() dauerte 7.090255022049seconds \ Array-Zugriff dauerte 2.3145787715912seconds – RyanNerd
In den aufstrebenden PHP 7.1 Sie werden in der Lage sein, dies zu tun (Accepted rfc for negative string offsets):
<?php
$silly = 'Mary had a little lamb';
echo $silly[-20];
echo $silly{-6};
echo $silly[-3];
echo $silly[-15];
echo $silly[-13];
echo $silly[-1];
echo $silly[-4];
echo $silly{-10};
echo $silly[-4];
echo $silly[-8];
echo $silly{3};
die();
Ich lasse Sie die Ausgabe erraten.
auch, habe ich dies zu xenonite's Performance Code mit diesen Ergebnissen:
substr() nahm 7,0334868431091 Sekunden
Array-Zugriff 2,3111131191254 Sekunden nahm
Direktbandzugangs 1 nahm.7971360683441seconds
Absichtlich falsch geschrieben ... – RyanNerd
Awesome Feature! – Slowaways
Danke für das Setzen von Benchmarks! Wenn jemand an C# -Benchmarks interessiert ist, um das gleiche zu tun, [diese Seite] (http: //cc.davelozinski.com/c-sharp/c-schnellste-Weg-zu-prüfen-Last-Zeichen-of-a-String) ist eine gute Lese. Direkter Zugriff auf das letzte gewonnene Zeichen. – WorkRelated
Sie letzte Zeichen php viele Möglichkeiten, wie substr() und mb_substr() mit finden.
Wenn Sie mit Multibyte-Zeichencodierungen wie UTF-8 verwenden mb_substr statt substr
Hier i Ihnen beiden Beispiele zeigen:
<?php
echo substr("testers", -1);
echo mb_substr("testers", -1);
?>
Eine Zeichenfolge in verschiedenen Sprachen einschließlich Cis und PHP wird auch als eine Reihe von Zeichen betrachtet.
, dass in der Theorie wissen, Array-Operationen als String diejenigen sein, schneller sollten Sie tun könnten,
$foo = "bar";
$lastChar = strlen($foo) -1;
echo $foo[$lastChar];
$firstChar = 0;
echo $foo[$firstChar];
jedoch Standard-Array-Funktionen wie
count();
wird an einer Schnur nicht.
Siemano, erhält nur PHP-Dateien aus ausgewähltem Verzeichnis:
$dir = '/home/zetdoa/ftp/domeny/MY_DOMAIN/projekty/project';
$files = scandir($dir, 1);
foreach($files as $file){
$n = substr($file, -3);
if($n == 'php'){
echo $file.'<br />';
}
}
- 1. Wie bekomme ich die ersten x Zeichen aus einer Zeichenfolge, ohne das letzte Wort abzuschneiden?
- 2. letzte n Zeichen in einer Zeichenkette mit Shell-Skript
- 3. Wie bekomme ich das letzte Element einer Sequenz in XPath?
- 4. Excel: letzte Zeichen-/Zeichenfolgenübereinstimmung in einer Zeichenfolge
- 5. DELETE das letzte Zeichen aus einer Zeile, wenn das letzte Zeichen ist char (10) in SQL
- 6. TWIG Wie bekomme ich das erste Wort einer Zeichenkette?
- 7. Wie finde ich das letzte Vorkommen einer Teilzeichenkette in einer Swift-Zeichenkette? Ich
- 8. Holen Sie das letzte Zeichen einer Zeichenfolge aus einer Variablen
- 9. Wie bekomme ich eine nullterminierte Zeichenkette von einer C# Zeichenkette?
- 10. Javascript: Wie man das letzte Zeichen von einem div oder von einer Zeichenkette entfernt?
- 11. Wie bekomme ich das letzte Zeichen eines Strings mit einer Excel-Funktion?
- 12. Wie erhält man das erste Zeichen einer Zeichenkette in SQL?
- 13. Extrahiere die letzte Zeichenkette in Klammern aus einer Zeichenkette - python
- 14. C# TextBox Wie bekomme ich den letzten Buchstaben einer Zeichenkette?
- 15. Wie löscht man Zeichen in einer Zeichenkette?
- 16. Wie entferne ich letzte und erste Leerzeichen von einer Zeichenkette?
- 17. Wie entferne ich das letzte Zeichen von String in C#?
- 18. Wie bekomme ich das neueste Zeichen in Textbox geschrieben?
- 19. objective-c bekomme die letzten 2 Zeichen einer Zeichenkette?
- 20. Wie wiederhole ich ein Zeichen n mal in einer Zeichenkette?
- 21. Wie bekomme ich das letzte Build Label in der Textdatei
- 22. C# Wie bekomme ich das letzte Mal in foreach Statement?
- 23. Wie bekomme ich das erste Zeichen einer bereits initialisierten Zeichenfolge in PHP?
- 24. Wie kann ich automatisch das erste Zeichen einer konstanten Zeichenkette als konstantes Zeichen erhalten?
- 25. Wie bekomme ich das erste und letzte Element von Array
- 26. Wie wird das letzte Zeichen einer Zeichenfolge unbekannter Länge extrahiert?
- 27. BestPractice - Verwandle das erste Zeichen einer Zeichenkette in Kleinbuchstaben
- 28. SQL Server: Wie lese ich das letzte Zeichen einer Zeichenfolge und ein neues Zeichen hinzufügen
- 29. PHP - Wie bekomme ich das Element vor das letzte Element eines Arrays?
- 30. Wie lösche ich das letzte Zeichen des Textes?
Siehe meine Antwort unten für diese Funktion in 7.1 von PHP. – RyanNerd
Sie könnten ['s ($ str) -> end()'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L192) hilfreich finden, da gefunden in [diese eigenständige Bibliothek] (https://github.com/delight-im/PHP-Str). – caw