Lösung: strpos
erwies sich als die effizienteste. Kann mit substr
gemacht werden, aber das erstellt eine temporäre Teilzeichenfolge. Kann auch mit regex gemacht werden, aber langsamer als strpos und liefert nicht immer die richtige Antwort, wenn das Wort Meta-Zeichen enthält (siehe Ayman Hourieh Kommentar).ein Wort an Ende der Zeichenfolge mit strpos
Gewählte Antwort:
if(strlen($str) - strlen($key) == strrpos($str,$key))
print "$str ends in $key"; // prints Oh, hi O ends in O
und am besten für strikte Gleichheit testen ===
(siehe David Antwort)
Vielen Dank an alle für die Unterstützung aus.
Ich versuche, in einer Zeichenfolge ein Wort zu passen, um zu sehen, ob es am Ende dieser Zeichenfolge auftritt. Die übliche strpos($theString, $theWord);
würde das nicht tun.
Grundsätzlich, wenn $theWord = "my word";
$theString = "hello myword"; //match
$theString = "myword hello"; //not match
$theString = "hey myword hello"; //not match
Was wäre die effizienteste Art und Weise, es zu tun?
P.S. Im Titel sagte ich strpos
, aber wenn ein besserer Weg existiert, ist das auch ok.
Was meinst du mit "Wort"? Leerzeichen-separierter Text? Würde der Schlüssel "foo" mit "barfoo" oder nur "bar foo" übereinstimmen? –
@Nick, wenn '$ word =" foo ";' dann beide '$ sentence =" barfoo "oder" bar foo ";' sollte immer noch "übereinstimmen". In diesem Fall ist es nicht wichtig, ob davor ein Leerzeichen steht oder nicht. – clover
mögliches Duplikat von [Was ist der effizienteste Test, ob eine PHP-Zeichenfolge mit einer anderen Zeichenfolge endet?] (Http://stackoverflow.com/questions/619610/whats-the-most-efficient-test-of-whether-a- php-string-ends-with-another-string) – Gajus