2012-04-11 56 views
1

我已經看到了這個...這個正則表達式實現了什麼?

preg_match("/.*" . $row['keyword'] . ".*/", $word, $matches); 

是什麼模式嘗試意味着什麼呢?

+1

http://www.regular-expressions.info/ – Drewdin 2012-04-11 03:33:50

+0

注意,在$行任何正則表達式的命令字符[「關鍵字」]將被評估d。如果你只是想看看關鍵字是一個字符串,你可以做'strpos($字符串,$行[「關鍵字」])!== FALSE' – Eli 2012-04-11 03:47:49

回答

3

這意味着找到的術語後面或之前有0個或更多字符(*),它們不是\n.)。

除非是做過的,你應該換$row['keyword']preg_quote($row['keyword'], '/')

+0

+1'preg_quote'。沒有人逃脫過! – 2012-04-11 03:34:55

+0

它是有道理的。這個'preg_quote'可以安全地使用德語字符嗎? – 2012-04-11 03:39:01

+0

@Defensor這是應該的,因爲它只會尋找匹配元字符,他們的代碼點均高於'127'小於字符。 – alex 2012-04-11 03:41:56

1

/只是模式的分隔符,以及.*意味着「任何字符(換行除外)重複0次以上,」所以它只是尋找任何字符串出現在$row['keyword'],在$word

1

它試圖找出$row['keyword']是否包含在$word,它也是安全的情況下,調用preg_quote$row['keyword']關鍵字包含元字符,如*/\

3

說明:

/       # start of the regex 
.       # match anything (any character, etc - except for /n) 
*       # zero or more times 
" . $row['keyword']. "  # match the keyword 
.*       # same as above 
/       # end of the regex