оказался наиболее эффективным. Может быть сделано с substr
, но это создает временную подстроку. Также может быть сделано с регулярным выражением, но медленнее, чем strpos, и не всегда дает правильный ответ, если слово содержит метасимволы (см. Комментарий Ayman Hourieh).соответствует слову до конца строки с strpos
Выбранный ответ:
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
Что бы наиболее эффективный способ сделать это?
P.S. В названии я сказал strpos
, но если лучший способ существует, все в порядке.
Что вы подразумеваете под словом? Текст, ограниченный пространством? Будет ли ключевой «foo» соответствовать «barfoo» или только «bar foo»? –
@Nick, если '$ word =" foo ";' тогда оба '$ предложения =" barfoo "или" bar foo ";' все равно 'match'. Это не важно в этом случае, если у него есть место перед этим или нет. – clover
Возможный дубликат [Что самое эффективное испытание того, заканчивается ли строка PHP другой строкой?] (Http://stackoverflow.com/questions/619610/whats-the-most-efficient-test-of-whether-a- php-string-ends-with-another-string) – Gajus