【发布时间】:2011-02-01 11:11:52
【问题描述】:
解决方案:
strpos 原来是最有效的。可以使用substr 完成,但这会创建一个临时子字符串。也可以使用正则表达式完成,但比 strpos 慢,并且如果单词包含元字符,则并不总是产生正确的答案(请参阅 Ayman Hourieh 评论)。
选择的答案:
if(strlen($str) - strlen($key) == strrpos($str,$key))
print "$str ends in $key"; // prints Oh, hi O ends in O
最好测试严格相等===(见大卫回答)
感谢大家的帮助。
我正在尝试匹配字符串中的一个单词,以查看它是否出现在该字符串的末尾。通常的strpos($theString, $theWord); 不会那样做。
基本上如果$theWord = "my word";
$theString = "hello myword"; //match
$theString = "myword hello"; //not match
$theString = "hey myword hello"; //not match
最有效的方法是什么?
附:在标题中我说strpos,但如果有更好的方法,那也没关系。
【问题讨论】:
-
“单词”是什么意思?空格分隔的文本?键“foo”会匹配“barfoo”还是只匹配“bar foo”?
-
@Nick,如果
$word = "foo";那么$sentence = "barfoo" or "bar foo";仍然应该match。在这种情况下,它前面是否有空格并不重要。