2012-02-20 2 views
-1

Я ищу функцию, которая делает этот вариант:функция PHP для согласования

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

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

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

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

+0

Вопрос 1: что не так с регулярным выражением? Вопрос 2: вы имели в виду фигурные скобки? С фигурной скобкой на месте ваше регулярное выражение, скорее всего, будет недействительным –

ответ

3

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

/** 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 = признаки, потому что функция возвращает ложь, когда не соответствует строке.

http://php.net/manual/en/function.stripos.php

0
function startsWithi($haystack, $needle) 
{ 
    return substr(strtolower($haystack), 0, strlen($needle))) === $needle; 
} 
+0

Вам нужна чувствительность к регистру на обеих строках –

+0

strtolower (substr ($ haystack, 0, strlen ($ needle)) === strtolower ($ needle) – jgroenen

1

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

Albeit ему нужна длина строки для сравнения, и результат должен быть сведены на нет положительных матчей

if (!strncasecmp($string, "search", 6)) { 

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

+0

Возможно использование $ haystack , $ needle, strlen ($ игла). – jgroenen

Смежные вопросы