PHP 从 txt 文件添加对象到数组

PHP Adding objects to array from a txt file

我正在尝试将 IP 地址添加到数组,但我无法使其正常工作
有人可以看出我犯了什么错误或推荐其他解决方案吗?

$ipAddress = $_SERVER['REMOTE_ADDR'];
$include = include "ip.txt";

$array = array($include);

if (in_array($ipaddress, $array)){
    echo "in array";
}
else {echo "error";}

这是 ip.txt 文件的样子(文件是 "public" 并不重要):

'IP1', 'IP2', 'IP3', 'IP4'

include 将尝试 运行 文件作为 PHP 程序。

而是使用 file_get_contents():

$include = file_get_contents('ip.txt');
$array = explode(', ', $include);

if (in_array("'$ipaddress'", $array)){
    echo "in array";
}

因为IP地址是用'包围的,所以在in_array()中的指针部分也加上。

将每个 IP 地址都放在一行上会更容易。然后你可以使用 file() 其中 returns 一个包含文件行的数组。

你做错了几件事,但这应该对你有用:

<?php

    $ipAddress = $_SERVER['REMOTE_ADDR'];
    $include = file_get_contents("ip.txt");


    $array = explode(",", str_replace("'", "", $include));

    if (in_array($ipAddress, $array)) {
        echo "in array";
    } else {
        echo "error";
    }

?>

1。您必须使用 file_get_contents(),因为 include 将首先仅包含文件,因此此纯文本位于 php 代码中,其次 returns 仅包含 truefalse!有关详细信息,请参阅手册:http://php.net/manual/en/function.include.php

引自那里:

Handling Returns: include returns FALSE on failure and raises a warning. Successful includes, unless overridden by the included file, return 1.

2。您必须从文件中分解字符串并删除单引号才能在数组中获取 IP

3。 PHP 变量区分大小写,所以 $ipAddress$ipaddress 是两个不同的变量!有关详细信息,请参阅手册:http://php.net/manual/en/language.variables.basics.php

还有引自那里的一句话:

The variable name is case-sensitive.