Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Strpos说它没有';I don’我找不到这个字符串_Php_Strpos - Fatal编程技术网

Php Strpos说它没有';I don’我找不到这个字符串

Php Strpos说它没有';I don’我找不到这个字符串,php,strpos,Php,Strpos,我有这个: $fi2 = "/var/www/server/poll/ips.txt"; //IP file $mystring = $_SERVER['REMOTE_ADDR']; //IP according to server $findme = file_get_contents($fi2); $pos = strpos($mystring, $findme); if ($pos === true) { echo "Found"; } else { echo "n

我有这个:

$fi2 = "/var/www/server/poll/ips.txt"; //IP file
$mystring = $_SERVER['REMOTE_ADDR']; //IP according to server
$findme = file_get_contents($fi2);
$pos = strpos($mystring, $findme);
if ($pos === true) {
    echo "Found";
} else {    
    echo "not found"; 
}
但是,即使IP与文本文件中的某些内容匹配,它也不会说“未找到”。我已经做了

echo "$mystring $findme"; 
它正确地输出我的IP和文本文件

有人告诉我,我应该换一个

if ($pos === true) {

我做了,但仍然不起作用

以下是我用来保存到文本文件的代码:

//Record IP
$fi2 = "/var/www/server/poll/ips.txt"; //IP file
file_put_contents($fi2, "\r\n$mystring", FILE_APPEND); //Stick it onto the IP file

直接从手册上:

返回针相对于干草堆字符串开头的位置(与偏移无关)。还要注意,字符串位置从0开始,而不是从1开始

如果未找到针,则返回
FALSE

因此,结果是一个数字位置或
FALSE
,这意味着
$pos===true
总是失败!另一个问题是
strpos()
的签名如下:

mixed strpos(字符串$haystack,mixed$needle[,int$offset=0])

您混淆了
$haystack
$needle
,这可能是由于命名不当造成的。试着这样做:

$fi2 = "/var/www/server/poll/ips.txt"; //IP file
$ip = $_SERVER['REMOTE_ADDR']; //IP according to server
$file = file_get_contents($fi2);
$pos = strpos($file, $ip);// ($findme, $mystring)
if ($pos !== FALSE) {
    echo "found";
} else {
    echo "not found";
}

直接从手册上:

返回针相对于干草堆字符串开头的位置(与偏移无关)。还要注意,字符串位置从0开始,而不是从1开始

如果未找到针,则返回
FALSE

因此,结果是一个数字位置或
FALSE
,这意味着
$pos===true
总是失败!另一个问题是
strpos()
的签名如下:

mixed strpos(字符串$haystack,mixed$needle[,int$offset=0])

您混淆了
$haystack
$needle
,这可能是由于命名不当造成的。试着这样做:

$fi2 = "/var/www/server/poll/ips.txt"; //IP file
$ip = $_SERVER['REMOTE_ADDR']; //IP according to server
$file = file_get_contents($fi2);
$pos = strpos($file, $ip);// ($findme, $mystring)
if ($pos !== FALSE) {
    echo "found";
} else {
    echo "not found";
}

直接从手册上:

返回针相对于干草堆字符串开头的位置(与偏移无关)。还要注意,字符串位置从0开始,而不是从1开始

如果未找到针,则返回
FALSE

因此,结果是一个数字位置或
FALSE
,这意味着
$pos===true
总是失败!另一个问题是
strpos()
的签名如下:

mixed strpos(字符串$haystack,mixed$needle[,int$offset=0])

您混淆了
$haystack
$needle
,这可能是由于命名不当造成的。试着这样做:

$fi2 = "/var/www/server/poll/ips.txt"; //IP file
$ip = $_SERVER['REMOTE_ADDR']; //IP according to server
$file = file_get_contents($fi2);
$pos = strpos($file, $ip);// ($findme, $mystring)
if ($pos !== FALSE) {
    echo "found";
} else {
    echo "not found";
}

直接从手册上:

返回针相对于干草堆字符串开头的位置(与偏移无关)。还要注意,字符串位置从0开始,而不是从1开始

如果未找到针,则返回
FALSE

因此,结果是一个数字位置或
FALSE
,这意味着
$pos===true
总是失败!另一个问题是
strpos()
的签名如下:

mixed strpos(字符串$haystack,mixed$needle[,int$offset=0])

您混淆了
$haystack
$needle
,这可能是由于命名不当造成的。试着这样做:

$fi2 = "/var/www/server/poll/ips.txt"; //IP file
$ip = $_SERVER['REMOTE_ADDR']; //IP according to server
$file = file_get_contents($fi2);
$pos = strpos($file, $ip);// ($findme, $mystring)
if ($pos !== FALSE) {
    echo "found";
} else {
    echo "not found";
}
返回一个数字,如果未找到,则返回
false

正确的if语句应该是:

if ($pos !== false) {
另一个常见的错误是写:

if (!$pos) {
但是,如果
$pos
0
——如果在字符串开头找到字符串,则会发生这种情况——此检查也将失败。

返回一个数字,如果未找到,则返回
false

正确的if语句应该是:

if ($pos !== false) {
另一个常见的错误是写:

if (!$pos) {
但是,如果
$pos
0
——如果在字符串开头找到字符串,则会发生这种情况——此检查也将失败。

返回一个数字,如果未找到,则返回
false

正确的if语句应该是:

if ($pos !== false) {
另一个常见的错误是写:

if (!$pos) {
但是,如果
$pos
0
——如果在字符串开头找到字符串,则会发生这种情况——此检查也将失败。

返回一个数字,如果未找到,则返回
false

正确的if语句应该是:

if ($pos !== false) {
另一个常见的错误是写:

if (!$pos) {

但是,如果
$pos
0
——如果在字符串开头找到字符串,则会发生这种情况——此检查也将失败。

if语句的另一种选择是:

if(!is_bool($pos)){

if语句的另一种选择:

if(!is_bool($pos)){

if语句的另一种选择:

if(!is_bool($pos)){

if语句的另一种选择:

if(!is_bool($pos)){

我认为这是三个问题的结合

首先,如果要加载的文件在ip地址的末尾有一个新行,那么它将不匹配:

$findme = file_get_contents($fi2);
改为

$findme = trim(file_get_contents($fi2));
正如其他人所指出的,您的pos逻辑是不正确的

if ($pos !== false) {
编辑:

此外,STRPO的参数顺序错误:

$pos = strpos($findme, $mystring);

我认为这是三个问题的结合

首先,如果要加载的文件在ip地址的末尾有一个新行,那么它将不匹配:

$findme = file_get_contents($fi2);
改为

$findme = trim(file_get_contents($fi2));
正如其他人所指出的,您的pos逻辑是不正确的

if ($pos !== false) {
编辑:

此外,STRPO的参数顺序错误:

$pos = strpos($findme, $mystring);

我认为这是三个问题的结合

首先,如果要加载的文件在ip地址的末尾有一个新行,那么它将不匹配:

$findme = file_get_contents($fi2);
改为

$findme = trim(file_get_contents($fi2));
正如其他人所指出的,您的pos逻辑是不正确的

if ($pos !== false) {
编辑:

此外,STRPO的参数顺序错误:

$pos = strpos($findme, $mystring);

我认为这是三个问题的结合

首先,如果要加载的文件在ip地址的末尾有一个新行,那么它将不匹配:

$findme = file_get_contents($fi2);
改为

$findme = trim(file_get_contents($fi2));
正如其他人所指出的,您的pos逻辑是不正确的

if ($pos !== false) {
编辑:

此外,STRPO的参数顺序错误:

$pos = strpos($findme, $mystring);

我只是自己想出来的

我变了

file_put_contents($fi2, "\r\n$mystring", FILE_APPEND); //Stick it onto the IP file

我知道