функция php для сопоставления - PullRequest
0 голосов
/ 20 февраля 2012

Я ищу функцию, которая выполняет эту опцию:

preg_match("/^{$STRING}/i", ...)

, но без регулярного выражения, и в первом должно быть ^, что означает, что это выражение будет ложным:

$search = "hi", $search_in "ahi";

должно быть в начале строки.

Ответы [ 5 ]

3 голосов
/ 20 февраля 2012

Не уверен, что я правильно понял ваш запрос ... Но ... Попробуйте это:

/** 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

2 голосов
/ 20 февраля 2012
stripos($haystack, $needle) === 0
2 голосов
/ 20 февраля 2012
if(stripos($search_in, $search) === 0) {
  echo "matched";
}
1 голос
/ 20 февраля 2012

Для этой цели точная функция равна strncasecmp.Я понятия не имею, почему в последнее время все так склонны к stripos обходным решениям.

Хотя для сравнения требуется длина строки, а для положительных совпадений результат должен быть отрицательнымПреимущество в том, что он сравнивает только первые 6 символов.Он не ищет весь предмет и впоследствии требует дополнительного сравнения.(Глупо, если используется как микрооптимизация. Но это точная функция для этой задачи.)

0 голосов
/ 20 февраля 2012
function startsWithi($haystack, $needle)
{
    return substr(strtolower($haystack), 0, strlen($needle))) === $needle;
}
...