2011-04-29 53 views
18
if ($_POST['id'] beginsWith "gm") { 
$_SESSION['game']=="gmod" 
} 
if ($_POST['id'] beginsWith "tf2") { 
$_SESSION['game']=="tf2" 
} 

怎麼做,所以它是否行得通呢?如果字符串以「XX」(PHP)開始

+11

你必須寫在C代碼補丁,增加了這個關鍵字時/語法 – Gordon 2011-04-29 16:52:34

回答

4
if (strpos($_POST['id'], "gm") === 0) { 
    $_SESSION['game'] ="gmod" 
} 
if (strpos($_POST['id'],"tf2") === 0) { 
    $_SESSION['game'] ="tf2" 
} 
+1

這是錯誤的。如果strpos返回false,則這兩個if語句將評估爲true。 – andrewtweber 2011-04-29 17:01:47

+0

@andrewtweber:有。用'==='替換'==':-P – 2011-04-29 17:13:14

34

你可以使用substring

if(substr($POST['id'],0,3) == 'tf2') 
{ 
    //Do something 
} 

編輯:固定不正確的函數名(用來substring(),應該是substr()

+3

+1。這應該是比strpos(輕微)更快,因爲它不會穿越失敗整個字符串。 – 2011-04-29 16:54:44

+0

是的,確實如此。 +1。 – Jon 2011-04-29 16:55:48

+0

@EmilVikström我** **嚴重懷疑你的發言約'SUBSTR()'比'strpos快()'。實際上我相信它會變慢*! – PeeHaa 2012-08-09 08:44:35

24

可以使用strposbegins_with

function begins_with($haystack, $needle) { 
    return strpos($haystack, $needle) === 0; 
} 


if (begins_with($_POST['id'], "gm")) { 
    $_SESSION['game']=="gmod" 
} 

// etc 
2
function startswith($haystack, $needle){ 
    return strpos($haystack, $needle) === 0; 
} 

if (startswith($_POST['id'], 'gm')) { 
    $_SESSION['game'] = 'gmod'; 
} 
if (startswith($_POST['id'], 'tf2')) { 
    $_SESSION['game'] = 'tf2'; 
} 

沒有TE是分配值的變量使用單一=

3

不這樣做的最快方法,但你可以使用正則表達式

if (preg_match("/^gm/", $_POST['id'])) { 
    $_SESSION['game']=="gmod" 
} 
if (preg_match("/^tf2/, $_POST['id'])) { 
    $_SESSION['game']=="tf2" 
} 
相關問題