Я ищу функцию, которая выполняет эту опцию:
preg_match("/^{$STRING}/i", ...)
, но без регулярного выражения, и в первом должно быть ^, что означает, что это выражение будет ложным:
^
$search = "hi", $search_in "ahi";
должно быть в начале строки.
Не уверен, что я правильно понял ваш запрос ... Но ... Попробуйте это:
/** Checks if a target string (haystack) starts with a specified string (needle) */ function startsWith($haystack, $needle) { return (stripos($haystack, $needle) === 0); } /* Usage */ startsWith("ahi", "hi"); // Returns FALSE startsWith("ahi", "ah"); // Returns TRUE
Обратите внимание, что вам нужно использовать 3 = знаков, потому что функция вернет false когдав строке нет совпадений.
=
http://php.net/manual/en/function.stripos.php
stripos($haystack, $needle) === 0
if(stripos($search_in, $search) === 0) { echo "matched"; }
Для этой цели точная функция равна strncasecmp.Я понятия не имею, почему в последнее время все так склонны к stripos обходным решениям.
strncasecmp
stripos
Хотя для сравнения требуется длина строки, а для положительных совпадений результат должен быть отрицательнымПреимущество в том, что он сравнивает только первые 6 символов.Он не ищет весь предмет и впоследствии требует дополнительного сравнения.(Глупо, если используется как микрооптимизация. Но это точная функция для этой задачи.)
function startsWithi($haystack, $needle) { return substr(strtolower($haystack), 0, strlen($needle))) === $needle; }