Php STRPO和/或stripos的正确用法是什么?(这是一只虫子吗?)

Php STRPO和/或stripos的正确用法是什么?(这是一只虫子吗?),php,Php,这让我陷入了一个循环: $s = "ERROR: 5 - [RecordN...blah blah blah"; print stripos($s, 'error') . "\n"; print strpos($s, "ERROR") . "\n"; print $s . "\n"; 结果: 0 0 ERROR: 5 - [RecordN...blah blah blah 嗯?好吧,我试一下: 结果是: 0 什么 我在跑步: php --version PHP 5.3.6-13ubunt

这让我陷入了一个循环:

$s = "ERROR: 5 - [RecordN...blah blah blah";
print stripos($s, 'error') . "\n";
print strpos($s, "ERROR") . "\n";
print $s . "\n";
结果:

0
0
ERROR: 5 - [RecordN...blah blah blah
嗯?好吧,我试一下:

结果是:

0
什么

我在跑步:

php --version

PHP 5.3.6-13ubuntu3.6 with Suhosin-Patch (cli) (built: Feb 11 2012 03:26:01) 
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
我在看虫子吗

提前谢谢

编辑:

显然我在那里失去了理智。谢谢你的回复

$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);
上面的例子很好用。因为
a
位于
abc
0
索引位置。如果它不在字符串中,则
strpos
将返回
false


上面的例子很好用。因为
a
位于
abc
0
索引位置。如果它不在字符串中,则
strpos
将返回
false

如果搜索项位于字符串的位置0(即在开始处),则返回0。很明显


如果搜索词不在字符串中,则返回
FALSE
。这就是为什么您应该使用
!==FALSE
测试是否已找到字符串。

如果搜索词位于字符串的位置0(即在开始处),则返回零。很明显


如果搜索词不在字符串中,则返回
FALSE
。这就是为什么您应该使用
!==FALSE
测试是否已找到字符串。

一切正常。得到零是因为第一次stripos将0作为“e”(或“e”)的位置返回,而第二次,将0作为整数打印,则是错误的

如果您检查stripos的manual,您将看到返回值描述为

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

尝试将您的代码更改为此,您将了解我的意思:

#1、#2和#4将是int(0),而#3将是bool(false)

在你的第二个例子中也发生了同样的事情。您正在检查“a”的位置,它实际上又是字符串中的第一个字符,这意味着它的位置是0

如果需要检查字符串是否为错误,则应(假定)更改以下代码:

为此:

或在需要时区分大小写:


一切都是正确的。得到零是因为第一次stripos将0作为“e”(或“e”)的位置返回,而第二次,将0作为整数打印,则是错误的

如果您检查stripos的manual,您将看到返回值描述为

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

尝试将您的代码更改为此,您将了解我的意思:

#1、#2和#4将是int(0),而#3将是bool(false)

在你的第二个例子中也发生了同样的事情。您正在检查“a”的位置,它实际上又是字符串中的第一个字符,这意味着它的位置是0

如果需要检查字符串是否为错误,则应(假定)更改以下代码:

为此:

或在需要时区分大小写:

$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);
$s = "ERROR: 5 - [RecordN...blah blah blah";
var_dump(stripos($s, 'error'));
var_dump(strpos($s, "ERROR"));

var_dump(strpos($s, 'error'));
var_dump(stripos($s, "ERROR"));

print $s . "\n";
$s = "ERROR: 5 - [RecordN...blah blah blah";
$isError = stripos($s, 'error') != 0;
$s = "ERROR: 5 - [RecordN...blah blah blah";
$isError = (stripos($s, 'error') !== false);
$s = "ERROR: 5 - [RecordN...blah blah blah";
$isError = (strpos($s, 'ERROR') !== false);