2012-04-11 61 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