在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}
答案 0 :(得分:1)
此脚本读取您的日志文件并将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仅发生一次。