首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件中读取数组

从文件中读取数组
EN

Stack Overflow用户
提问于 2013-07-27 15:56:06
回答 4查看 137关注 0票数 1

我有下一个用php编写的代码

代码语言:javascript
复制
<?
$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文件加载这个数组,所以我写了代码

代码语言:javascript
复制
<?
$stop_ips_masks = file('array.txt');
foreach ( $stop_ips_masks as $k=>$v )
{
    if ( preg_match( '#^'.$v.'$#', $_SERVER['REMOTE_ADDR']) )
        echo found;
}
?>

array.txt在哪里

代码语言:javascript
复制
"66\.249\.[6-9][0-9]\.[0-9]+",
"74\.125\.[0-9]+\.[0-9]+",

这段代码不起作用。请帮助我,我的代码出了什么问题?

EN

回答 4

Stack Overflow用户

发布于 2013-07-27 15:59:02

您需要首先将文本转换为数组,因为您现在正在做的是在您的正则表达式模式中包含一个,

代码语言:javascript
复制
$stop_ips_masks = file_get_contents('array.txt');
$stop_ips_masks = explode("," $stop_ips_masks);

您可能还需要执行修剪操作并删除换行符。如果你坚持使用一个记录分隔符,这将会更容易。如逗号或换行符。不是两个都有。

如果从文本文件中删除,,则可以执行以下操作

代码语言:javascript
复制
$stop_ips_masks = file('array.txt');
票数 1
EN

Stack Overflow用户

发布于 2013-07-27 16:06:29

我相信你的问题是引号和尾随逗号。虽然在php中创建数组需要它们,但如果它们来自文件,则它们是无效的。

代码语言:javascript
复制
    $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;
    }
票数 0
EN

Stack Overflow用户

发布于 2013-07-28 00:02:24

另一种选择是在文件中将字符串"raw“存储为行:

代码语言:javascript
复制
66\.249\.[6-9][0-9]\.[0-9]+
74\.125\.[0-9]+\.[0-9]+

然后读取文件,将每一行放入数组中:

代码语言:javascript
复制
$array = file('array.txt');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17895601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档