PHP: Wie lautet das letzte Zeichen im String?

Silke Schümann wrote this 20:10:

Will man überprüfen, dass die Pfadangabe zum Ordner auch wirklich mit einem Slash (= Schrägstrich) endet, dann kann man einfach kurz Mal den String umdrehen und nachsehen welcher Wert auf dem ersten Zeichen liegt. Umdrehen heißt ja, das letzte Zeichen ist das erste Zeichen.

  1. $string = "http://www.pusemuckel.de/meinOrdner";
  2. echo (ord(strrev($string))==47) ? 'Das letzte Zeichen ist ein Slash.':'Das letzte Zeichen ist kein Slash.';

Ausgabe: Das letzte Zeichen ist kein Slash.

  1. $string = "http://www.pusemuckel.de/meinOrdner/";
  2. echo (ord(strrev($string))==47) ? 'Das letzte Zeichen ist ein Slash.':'Das letzte Zeichen ist kein Slash.';

Ausgabe: Das letzte Zeichen ist ein Slash.

Praktischer Einsatz dieser Pfadprüfung

Gebraucht wird so etwas, z.B. wenn in einem CMS PHP-Programmierer mit den unterschiedlichsten fachlichen Sachkenntnissen, vom blutigen Anfänger bis zum großen Experten, Erweiterungen anmelden können sollen, so dass diese Programmerweiterungen ausgeführt werden. Schnell haben Anfänger wie Experten hier mal per Copy&Paste ein Slash nicht mitgeführt. Hieran sollte sich das Programm nicht unbedingt stören. Ich finde immer typische Fehlereingaben die man Programmtechnisch abfangen kann, sollte man auch abfangen. Das macht das Leben gleich viel einfacher.

  1. $ordnerpfad = (ord(strrev($_GET['ordnerpfad']))==47) ? $_GET['ordnerpfad'] : $_GET['ordnerpfad'].'/';

Und schon hat man nicht nur geprüft, ob ein Slash am Ende der Pfadeingabe steht, sondern auch gleich einen Slash geschrieben, wenn er denn fehlt.

2 Responses to “PHP: Wie lautet das letzte Zeichen im String?”

  1. StefanB Says:

    Sicher eine brauchbare Lösung, allerdings in meinen Augen ein nicht ganz “sauber” Programmierstil.
    Eindeutiger (und besser zu lesen) ist imo

    $string = “http://www.pusemuckel.de/meinOrdner/”;
    echo (substr($string,-1)==’/') ? ‘Das letzte Zeichen ist ein Slash.’:'Das letzte Zeichen ist kein Slash.’;

  2. Silke Schümann Says:

    Yeph. Besser.

    Ich hatte nach der Abfrage des letzten Zeichen gesucht, aber mal wieder das Chinesisch des Handbuches beim Überfliegen der String-Befehle die Erklärungen nicht 100% verstanden … dabei wäre es so einfach. Negative Werte zählen vom Ende nach vorn und positive Werte Zählen die Stellen im String vom Anfang bis zum Ende.

    Ist length angegeben und negativ, werden genau so viele Zeichen vom Ende von string abgeschnitten (nachdem die Startposition ermittelt wurde, sollte start negativ sein). Gibt start eine Position hinter dem abzuschneidenden Teil an, wird ein leerer String zurückgegeben.

    Quelle: PHP Manual substr

    Abgeschnitten heißt für mich, dass dieser Teil weg ist, nicht dass eben dieser Teil ausgegeben wird und damit in einer if-Klausel zum Vergleich herangenommen werden kann. :D

    Danke. :-)

Leave a Reply