Поскольку в одном из проектов как вариант потребовалась функция для определения вхождения подстроки в начало строки(а заодно сделал функцию и для конца строки), зная что в PHP 8 такие функции появились, решил написать аналогичные функции для более ранних версий PHP, при этом попробовал сделать их поведение аналогичным оригинальным функциям из PHP 8, которые носят название str_starts_with и str_ends_with. Возможно если бы указанных функций в PHP 8 не существовало, я бы написал свои функции с несколько иным функционалом, например добавил бы третий параметр, чтобы при необходимости функция могла возвращать исходную строку из которой при совпадении в рассматриваемой позиции с искомой строкой эта искомая строка бы вырезалась или возвращалась бы исходная строка целиком если совпадения с искомой строкой в рассматриваемой позиции нет. Обратите внимание что не гарантируется на 100% аналогичное поведение функций приведённых в листинге ниже и оригинальных функций появившихся в языке PHP начиная с 8-ой версии, поэтому предлагаю оставить в именовании функций слово Beta. При этом я пробовал сделать поведение функций похожим, например в оригинальных функциях, при передаче в качестве искомой подстроки значения пустой строки - функции возвращают true, то есть предположительно считается что любая строка начинается и заканчивается пустой строкой, это поведение я так же реализовал, хотя если бы оригинальных функций не существовало в подобной ситуации я возможно возвращал бы false. Так же при выявлении не соответствий в поведениях функций реализация может быть переписана, о чём может быть опубликована информация. Приведённая реализация функций написана мной без выяснения того как именно оригинальные функции устроены, то есть какой алгоритм используется в оригинальных функциям, поэтому не следует судить по приведённому коду о реальном устройстве оригинальных функций. Так же приведённая реализация не претендует называться оптимальной, при этом функции выполняют те действия для которых они предназначались. Возможно алгоритм работы функций будет оптимизирован, то есть будет опубликована другая версия этих функций.
В листинге ниже приведена функция на языке PHP определяющая вхождение с учётом регистра подстроки передаваемой в втором параметре в начало строки передаваемой в первом параметре. В случаи совпадения функция возвращает true, иначе - false.
В листинге ниже приведена функция на языке PHP определяющая вхождение с учётом регистра подстроки передаваемой в втором параметре в конец строки передаваемой в первом параметре. В случаи совпадения функция возвращает true, иначе - false.
В начале статьи уже писал, что для решения задачи мне так то нужна была функция которая при необходимости так же могла вырезать из начала или конца исходной строки подстроку при совпадении в рассматриваемой позиции, поэтому написал функции которые это делают.
В листинге ниже приведена функция которая при совпадении исходной строки в начале с подстрокой вырезает данную подстроку из исходной строки и возвращает результат, в случаи если исходная строка не передана или первым параметром передано значение false - возвращает false, в остальных случаях возвращает исходную строку.
В листинге ниже приведена функция которая при совпадении исходной строки в конце с подстрокой вырезает данную подстроку из исходной строки и возвращает результат, в случаи если исходная строка не передана или первым параметром передано значение false - возвращает false, в остальных случаях возвращает исходную строку.