我已经看到了这个...这个正则表达式实现了什么?
preg_match("/.*" . $row['keyword'] . ".*/", $word, $matches);
是什么模式尝试意味着什么呢?
我已经看到了这个...这个正则表达式实现了什么?
preg_match("/.*" . $row['keyword'] . ".*/", $word, $matches);
是什么模式尝试意味着什么呢?
这意味着找到的术语后面或之前有0个或更多字符(*
),它们不是\n
(.
)。
除非是做过的,你应该换$row['keyword']
与preg_quote($row['keyword'], '/')
。
+1'preg_quote'。没有人逃脱过! – 2012-04-11 03:34:55
它是有道理的。这个'preg_quote'可以安全地使用德语字符吗? – 2012-04-11 03:39:01
@Defensor这是应该的,因为它只会寻找匹配元字符,他们的代码点均高于'127'小于字符。 – alex 2012-04-11 03:41:56
/
只是模式的分隔符,以及.*
意味着“任何字符(换行除外)重复0次以上,”所以它只是寻找任何字符串出现在$row['keyword']
,在$word
。
它试图找出$row['keyword']
是否包含在$word
,它也是安全的情况下,调用preg_quote
到$row['keyword']
关键字包含元字符,如*
,/
,\
等
说明:
/ # 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
http://www.regular-expressions.info/ – Drewdin 2012-04-11 03:33:50
注意,在$行任何正则表达式的命令字符[“关键字”]将被评估d。如果你只是想看看关键字是一个字符串,你可以做'strpos($字符串,$行[“关键字”])!== FALSE' – Eli 2012-04-11 03:47:49