phpbar.de logo

Mailinglisten-Archive

[php] Schlüsselwort suchen

[php] Schlüsselwort suchen

Lutz Zetzsche php at sea-rescue.de
Die Sep 30 11:12:38 CEST 2003


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