Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP preg_match()在字符串中查找特定IP地址_Php_Regex - Fatal编程技术网

使用PHP preg_match()在字符串中查找特定IP地址

使用PHP preg_match()在字符串中查找特定IP地址,php,regex,Php,Regex,我的PHP代码需要确定特定IP地址是否在字符串$ipaddress中: preg_match("[1][4]\.[1][0][8]\.[2][4][1]\.[6][9]", $ipaddress ) 出于某种原因,这不起作用。知道为什么它不起作用吗?[1]和1是一样的,创建一个元素的组是没有意义的。您可以直接查找14\.108\.241\.69 缺少的是分隔符。使用Perl正则表达式时,模式必须用分隔符括起来,通常是/、或~ preg_match('/14\.108\.241\.69/', $

我的PHP代码需要确定特定IP地址是否在字符串
$ipaddress
中:

preg_match("[1][4]\.[1][0][8]\.[2][4][1]\.[6][9]", $ipaddress )

出于某种原因,这不起作用。知道为什么它不起作用吗?

[1]
1
是一样的,创建一个元素的组是没有意义的。您可以直接查找
14\.108\.241\.69

缺少的是分隔符。使用Perl正则表达式时,模式必须用分隔符括起来,通常是
/
~

preg_match('/14\.108\.241\.69/', $ipaddress)
preg_match('~14\.108\.241\.69~', $ipaddress)
preg_match('#14\.108\.241\.69#', $ipaddress)
preg\u match()
的所有有效用法是否都有效


因为您正在寻找一段简单的字符串,所以实际上不需要
preg_match()
,一个简单的
strstr($ipaddress,'14.108.241.69')!==FALSE
同样可以更快地完成任务。

[1][4][1][0][8][2][4][1][6][9][/code>写得更好。
14\.108\.241\.69
怎么样?
<14\.108\.241\.69
或者只是
str()
你忘记了分隔符:
'14\.108\.241\.69
。既然它是一个文本,为什么不使用
strpos
?一开始你不够严格
114
,而
214
也会匹配。使用
^
启动锚点,或
\D14\.104\.241\.69
。不需要字符类。perl:
/(?。使用quotemeta(
\Q
\E
),无需转义反斜杠。使用负环视,它确保只捕获IP。如果变量仅包含IP,
If($ipaddress eq'14.108.241.69'){…}