【发布时间】:2011-09-09 09:37:07
【问题描述】:
是否可以对不应该匹配但仍返回 true 的内容执行 preg_match()?
例如,目前我们有...
if (preg_match('#^Mozilla(.*)#', $agent)) {
我们要检查 Mozilla 字符串是否不在 $agent 中,但仍有 preg_match 返回 true。
我们无法将其更改为:
if (!preg_match('#^Mozilla(.*)#', $agent)) {
【问题讨论】:
-
我不明白。为什么不能使用后者?
-
正则表达式部分是动态的,我们可以改变它,但我们不能改变它的行,虽然它只是为了演示
-
但这没关系。即使你的模式不是固定的,你想检查模式是否不匹配,你只需要将
preg_match的返回值取反即可。 -
关键是我不能改变脚本的逻辑,如果可以的话我就用
if (!preg_match -
副本不好。 preg_match() 是一个难以解决的函数。这不是关于正则表达式,而是关于 preg_match 的奇怪返回值(多种可能的 types - 布尔值和整数)。
标签: php regex preg-match