Стандартный способ PHP проверить, $str
заканчивается ли строка подстрокой $test
:
$endsWith = substr( $str, -strlen( $test ) ) == $test
Это самый быстрый способ?
php
string
performance
Джейсон Коэн
источник
источник
s($str)->endsWith($test)
илиs($str)->endsWithIgnoreCase($test)
помочь в этой автономной библиотеке .Ответы:
То, что сказал Ассаф, правильно. Для этого в PHP есть встроенная функция.
Если
$test
он длиннее, чем$str
PHP, выдает предупреждение, поэтому вам нужно сначала проверить это.источник
Этот метод немного дороже памяти, но он быстрее:
Это лучше всего, когда вы точно знаете, что такое игла, и можете жестко запрограммировать ее в обратном направлении. Если вы программно перевернете иглу, она станет медленнее, чем предыдущий метод.
источник
stripos
в худшем случае будет повторяться вся строка, тогда какsubstr_compare
будет сравниваться не более длины иглы. Да,substr_compare
требуется вычислить длину стога сена (и иголку гораздо меньшего размера), но этот метод требует этого и полного копирования, и, возможно, преобразования всего этого в нижний регистр для загрузки.substr_compare()
работает хорошо.Отрицательное смещение «начинает отсчет с конца строки».
источник
Вот простой способ проверить, заканчивается ли одна строка другой, задав
strpos
смещение там, где она должна быть найдена:Просто, и я думаю, что это будет работать в PHP 4.
источник
Это зависит от того, какая эффективность вам важна.
Ваша версия использует больше памяти из-за дополнительной копии из-за использования substr.
Альтернативная версия может искать в исходной строке последнее вхождение подстроки без создания копии, но, вероятно, будет медленнее из-за большего количества тестов.
Вероятно, наиболее эффективный способ - выполнить цикл по символам от позиции -sterlen (тестовая) до конца строки и сравнить. Это минимальное количество сравнений, на которое вы можете надеяться, и почти не требует дополнительной памяти.
источник
Другой способ - использовать
strrpos
функцию :Но это не быстрее.
источник
Я надеюсь, что приведенный ниже ответ может быть эффективным и простым:
источник
Не знаю, быстро это или нет, но для односимвольного теста они тоже работают:
источник
самый простой способ проверить это с помощью регулярного выражения
например, чтобы проверить, является ли указанная почта gmail:
источник
Я думаю, что обратные функции, такие как strrchr (), помогут вам быстрее всего сопоставить конец строки.
источник
Это чистый PHP, без вызова внешних функций, кроме strlen .
источник
для однозарядной иглы:
источник