我有下一个用php编写的代码
<?
$stop_ips_masks = array(
"66\.249\.[6-9][0-9]\.[0-9]+",
"74\.125\.[0-9]+\.[0-9]+",
);
foreach ( $stop_ips_masks as $k=>$v )
{
if ( preg_match( '#^'.$v.'$#', $_SERVER['REMOTE_ADDR']) )
echo found;
}
?>它工作得很好。但是我想从txt文件加载这个数组,所以我写了代码
<?
$stop_ips_masks = file('array.txt');
foreach ( $stop_ips_masks as $k=>$v )
{
if ( preg_match( '#^'.$v.'$#', $_SERVER['REMOTE_ADDR']) )
echo found;
}
?>array.txt在哪里
"66\.249\.[6-9][0-9]\.[0-9]+",
"74\.125\.[0-9]+\.[0-9]+",这段代码不起作用。请帮助我,我的代码出了什么问题?
发布于 2013-07-27 15:59:02
您需要首先将文本转换为数组,因为您现在正在做的是在您的正则表达式模式中包含一个,
$stop_ips_masks = file_get_contents('array.txt');
$stop_ips_masks = explode("," $stop_ips_masks);您可能还需要执行修剪操作并删除换行符。如果你坚持使用一个记录分隔符,这将会更容易。如逗号或换行符。不是两个都有。
如果从文本文件中删除,,则可以执行以下操作
$stop_ips_masks = file('array.txt');发布于 2013-07-27 16:06:29
我相信你的问题是引号和尾随逗号。虽然在php中创建数组需要它们,但如果它们来自文件,则它们是无效的。
$stop_ips_masks = file('array.txt', FILE_IGNORE_NEWLINES);
foreach ( $stop_ips_masks as $k=>$v )
{
$v = trim(rtrim($v, ","), '"');
if ( preg_match( '#^'.$v.'$#', $_SERVER['REMOTE_ADDR']) )
echo found;
}发布于 2013-07-28 00:02:24
另一种选择是在文件中将字符串"raw“存储为行:
66\.249\.[6-9][0-9]\.[0-9]+
74\.125\.[0-9]+\.[0-9]+然后读取文件,将每一行放入数组中:
$array = file('array.txt');https://stackoverflow.com/questions/17895601
复制相似问题