Wie bekomme ich das letzte Zeichen einer Zeichenkette in PHP?


Answers

substr($string, -1) 
Question

Ich muss das letzte Zeichen einer Zeichenfolge abrufen. Angenommen, ich habe "Tester" als Eingabezeichenfolge und möchte, dass das Ergebnis "s" lautet. Wie kann ich das in PHP machen?




Ich würde raten, für Gordons Lösung zu gehen, 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 so etwas aus

 ---------------------------------- 
 10000000 repetitions...
 ----------------------------------

 substr() took 2.0285921096802seconds 
 array access took 1.7474739551544seconds



Siemano, bekomme nur PHP-Dateien aus dem ausgewählten 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 />';
  }
}



Sie können letzte Zeichen mit PHP viele Möglichkeiten wie substr() und mb_substr() .

Wenn Sie Multibyte-Zeichenkodierungen wie UTF-8 verwenden, verwenden Sie mb_substr anstelle von substr

Hier kann ich Ihnen beide Beispiele zeigen:

<?php
    echo substr("testers", -1);
    echo mb_substr("testers", -1);
?>

Live-Demo




Im aufstrebenden PHP 7.1 können Sie dies tun ( Accepted rfc für 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 dich die Ausgabe erraten.

Außerdem habe ich dies mit folgenden xenonite's Leistungscode von xenonite's hinzugefügt:

substr () hat 7.0334868431091sekunden genommen

Array-Zugriff dauerte 2.3111131191254seconds

Der direkte Zeichenfolgenzugriff dauerte 1,7971360683441 Sekunden