在php中使用regex如何将每个IP存储到单独的变量中?
它将从如下所示的日志文件中获取内容。
1/27/2013 7:34:14 AM Removed {109.104.19.75}
1/27/2013 7:34:16 AM Added {98.119.183.235}
1/27/2013 7:34:17 AM Removed {98.119.183.235}
1/27/2013 7:34:34 AM Added {89.155.107.178}
1/27/2013 7:34:35 AM Removed {89.155.107.178}发布于 2013-01-27 22:06:21
此脚本读取您的日志文件,并以数组形式返回IP地址。为此,我建议使用数组,因为使用PHP可以比单独的变量更好地处理它:
function readIps($filename, $unique = false) {
$lines = file($filename);
$result = array();
foreach ($lines as $line) {
if (preg_match('/\{([^\}]+)\}$/', $line, $matches)) {
$result[] = $matches[1];
}
}
return $unique ? array_values(array_unique($result)) : $result;
}此脚本假定您确定每行末尾的括号中只列出了IP地址。如果不是这样,正则表达式还将匹配IP地址以外的其他内容,并且必须更加特殊。
只用你的文件名调用它,你就会得到一个IP列表的列表,只要它出现的频率就会出现。在第二个参数设置为true的情况下调用它,您将获得一个列表,其中每个IP只出现一次。
https://stackoverflow.com/questions/14547961
复制相似问题