用于匹配的php函数

时间:2012-02-20 16:25:53

标签: php match matching

我正在寻找执行此选项的功能:

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

但是,没有正则表达式,并且第一个中必须有^,这意味着此表达式将为false:

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

它必须位于字符串的开头。

5 个答案:

答案 0 :(得分: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个=符号,因为当字符串中没有匹配项时,该函数将返回false。

  

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

答案 1 :(得分:2)

if(stripos($search_in, $search) === 0) {
  echo "matched";
}

答案 2 :(得分:2)

stripos($haystack, $needle) === 0

答案 3 :(得分:1)

用于此目的的完全函数是strncasecmp。我不知道为什么每个人最近都倾向于stripos解决方法。

虽然它需要字符串长度进行比较,但对于正匹配必须取消结果

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

优点是它实际上只比较前6个字符。它不会搜索整个主题,之后需要进行额外的比较。 (如果用作微优化,则很愚蠢。但这是该任务的确切功能。)

答案 4 :(得分:0)

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