2012-02-20 118 views
-1

我找函數執行此選項:PHP函數用於匹配

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

,但沒有正則表達式,而且必須在第一^,這意味着這個表達式將是假的:

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

它必須在字符串的開頭。

+0

問題1:正則表達式有什麼問題?問題2:你的意思是在那裏有大括號嗎?使用花括號,你的正則表達式很可能是無效的 – 2012-02-20 16:33:58

回答

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

2
if(stripos($search_in, $search) === 0) { 
    echo "matched"; 
} 
0
function startsWithi($haystack, $needle) 
{ 
    return substr(strtolower($haystack), 0, strlen($needle))) === $needle; 
} 
+0

你需要在兩個字符串上的大小寫敏感 – 2012-02-20 16:33:00

+0

strtolower(substr($ haystack,0,strlen($ needle))=== strtolower($ needle) – jgroenen 2012-02-20 17:17:20

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

確切函數,該函數的目的是strncasecmp。我不知道爲什麼每個人都對最近的stripos解決方案如此着迷。

儘管它需要的字符串的長度進行比較,並且結果必須取反爲肯定匹配

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

的優點在於,它實際上只前6個字符進行比較。它不搜索整個主題,並且需要之後進行額外的比較。 (如果用作微優化,則是愚蠢的,但它確實是該任務的功能。)

+0

也許使用$ haystack ,$針,strlen($針)。 – jgroenen 2012-02-20 17:15:24