我正在寻找执行此选项的功能:
preg_match("/^{$STRING}/i", ...)
但是,没有正则表达式,并且第一个中必须有^
,这意味着此表达式将为false:
$search = "hi", $search_in "ahi";
它必须位于字符串的开头。
答案 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。
答案 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;
}