2015-08-29 44 views
-1

我想檢查是否形式$str."s[num]"的短語,例如hello3his12,其中在這種情況下$str="hello3hi",存在一個字符串$string,如果它不會返回的[NUM]值作爲$num,其中在這種情況下$num=12如何在字符串中找到特定的短語?

這就是我試圖以檢查在$字符串存在短語

$string ="(dont:jake3rs120 [mik])"; 
$str = "jake3r"; 
if(preg_match('~^'.$str.'s([0-9]+)$~', $string)){ 
    echo 'phrase exists'; 
}else{ 
    echo'phrase does not exist'; 
} 

問題是這樣始終返回false,沒有人知道爲什麼嗎?

+1

'^'和'$'是主題開始和結束標記。他們不是正則裝飾。 – mario

回答

1

正如馬里奧在他的評論中說的,^匹配字符串的開始,$字符串的結尾。因此,在你的示例代碼,preg_match回報false因爲有你在字符串兩邊串其他字符要匹配:

(dont:jake3rs120 [mik]) 

您的代碼將工作,如果$string價值爲jake3rs120

所以,使其符合您的字符串的話,只是刪除^$

if(preg_match('~'.$str.'s([0-9]+)~', $string)) { 
    echo 'phrase exists'; 
} else { 
    echo'phrase does not exist'; 
} 

s後得到的數量,使用的preg_match第三個參數:

if(preg_match('~'.$str.'s([0-9]+)~', $string, $matches)) { 
    echo 'phrase exists'; 
    echo $matches[1]; // Echoes the number after s. 
} else { 
    echo'phrase does not exist'; 
} 
+0

謝謝,我現在明白了。如果短語存在,是否有可能在's'之後得到數字? – user3741635

相關問題