Ich muss das letzte Zeichen einer Zeichenkette abrufen. Sagen wir, ich habe "testers" als Eingabe-String und ich möchte, dass das Ergebnis "s" ist. wie kann ich das in PHP tun?
Antworten
Zu viele Anzeigen?Ich kann keine Kommentare hinterlassen, aber in Bezug auf die Antwort von FastTrack sollten Sie auch daran denken, dass das Zeilenende nur aus einem einzigen Zeichen bestehen darf. Ich würde vorschlagen
substr(trim($string), -1)
EDIT: Mein nachstehender Code wurde von jemandem bearbeitet, so dass er nicht das tut, was ich angegeben habe. Ich habe meinen ursprünglichen Code wiederhergestellt und den Wortlaut geändert, um ihn deutlicher zu machen.
trim
(o rtrim
) wird entfernt todo Wenn Sie also nach Leerzeichen, Tabulatoren oder anderen Leerzeichen suchen müssen, ersetzen Sie zunächst manuell die verschiedenen Zeilenenden:
$order = array("\r\n", "\n", "\r");
$string = str_replace($order, '', $string);
$lastchar = substr($string, -1);
Ich würde zu Gordons Lösung raten, da sie leistungsfähiger ist als substr():
<?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 etwas aus wie
----------------------------------
10000000 repetitions...
----------------------------------
substr() took 2.0285921096802seconds
array access took 1.7474739551544seconds
Erinnern Sie sich, wenn Sie eine Zeichenkette haben, die als Zeile aus einer Textdatei gelesen wurde, indem Sie die fgets()
Funktion, müssen Sie substr($string, -3, 1)
so dass Sie das eigentliche Zeichen und nicht einen Teil des CRLF (Carriage Return Line Feed) erhalten.
Ich glaube nicht, dass die Person, die die Frage gestellt hat, dies brauchte, aber ich hatte Probleme, das letzte Zeichen aus einer Zeichenkette aus einer Textdatei zu erhalten, und ich bin sicher, dass andere auf ähnliche Probleme stoßen werden.
Sie können das letzte Zeichen mit php auf verschiedene Arten finden substr() y mb_substr() .
Wenn Sie Multibyte-Zeichenkodierungen wie UTF-8 verwenden, benutzen Sie mb_substr anstelle von Teilbereich
Hier kann ich Ihnen beide Beispiele zeigen:
<?php
echo substr("testers", -1);
echo mb_substr("testers", -1);
?>
In verschiedenen Sprachen, darunter C sharp und PHP, wird eine Zeichenkette auch als Array von Zeichen betrachtet.
Sie wissen, dass Array-Operationen theoretisch schneller sein sollten als String-Operationen,
$foo = "bar";
$lastChar = strlen($foo) -1;
echo $foo[$lastChar];
$firstChar = 0;
echo $foo[$firstChar];
Allerdings können Standard-Array-Funktionen wie
count();
funktioniert nicht bei einer Zeichenkette.