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);