Mailinglisten-Archive |
Hi Sebastian, Zitat von Sebastian Tobias Mendel genannt Mendelsohn <lists at sebastianmendel.de>: > > Wenn die folgenden Beschreibungen gelten: > > > > stripos -- Find position of first occurrence of a case-insensitive > > string > > strpos -- Find position of first occurrence of a string > > strripos -- Find position of last occurrence of a case-insensitive > > string in a string > > > > kann folgende Beschreibung eigentlich nicht richtig sein, wenn die > > Funktionen analog aufgebaut sind: > > > > strrpos -- Find position of last occurrence of a char in a string > > also in php 4.3.3 stimmt die funktions-beschreibung: > // 4 15 36 > // elefant > $string = 'abcdeabcdeabcdeelefantabcdeabcdeabcde'; > $_tring = '0123456789012345678901234567890123456'; > echo '<pre>' . $string . '<br />'; > echo $_tring . '<br />'; > echo 'elefant: ' . strrpos($string, 'elefant') . '<br />'; > echo 'elefant: ' . strpos($string, 'elefant') . '<br />'; > echo 'e: ' . strrpos($string, 'e') . '<br />'; > echo 'e: ' . strpos($string, 'e') . '<br />'; > > ergibt: > > abcdeabcdeabcdeelefantabcdeabcdeabcde > 0123456789012345678901234567890123456 > elefant: 36 > elefant: 15 > e: 36 > e: 4 scheint so, dass Du noch ein Bisschen besser getestet hast als ich... ;-) Du hast Recht, und damit stimmt natuerlich auch die Doku. :-))) Leider ist PHP so fehlertolerant, dass es keinen Fehler auswirft, wenn man der Funktion strrpos() als Suchparameter einen Zeichenkette anstatt eines einzelnen Zeichens uebergibt. Es nimmt einfach den Anfangsbuchstaben der uebergebenen Zeichenkette. Das ist jedenfalls der Schluss, den ich aus Deinem Test ziehen muss, den ich auch bei mir noch einmal nachvollzogen habe. Dass das so ist, ist mir gestern Abend nicht aufgefallen, weil ich etwas unpraktischer als Du getestet habe. Der Anfangsbuchstabe des Suchparameters kam bei mir in der Zeichenkette leider nur einmal vor. Damit wurde natuerlich in diesem Sonderfall auch die Position der gesamten Zeichenkette richtig ermittelt. Ich danke Dir und Harald, dass Ihr mich auf diesen Fehler aufmerksam gemacht habt. :-))) Ich muss zugeben, dass mir niemals aufgefallen ist, dass der Suchparameter bei strrpos() nur ein Zeichen sein soll, weil ich zu dieser Funktion ueber die Funktion strpos() gekommen bin und strrpos() dabei als eine dazu umgekehrte Funktion betrachtet habe und wohl nicht aufmerksam genug die Doku gelesen habe. Schliesslich arbeiten die analogen Funktionen von strrpos() bei der Suche mit einem String... Und PHP wirft ja auch keinen Fehler aus - selbst mit error_reporting(E_ALL) hier bei mir nicht einmal einen Warnung -, sondern macht einfach etwas, von dem ich in diesem Fall nichts geahnt habe... ;-) Diese Form der kuenstlichen Intelligenz mag ich eigentlich gar nicht. Wenn ich als Programmierer einen Fehler mache, moechte ich, dass mir der Interpreter auf die Finger haut. :-) Ich sage jetzt nicht, an welches Betriebssystem mich diese Form des Versuchs, sich intelligent zu verhalten, erinnert, denn das waere dann doch etwas ungerecht. :-))) In diesem Sinne: Danke fuer die Erleuchtung und einen schoenen Tag! :-) Lutz
php::bar PHP Wiki - Listenarchive