2009-06-17 165 views
2

我只是试图去弄清楚strpos ...问题关于PHP

$mystring = "/abc/def/hij"; 
$find = "/abc"; 

echo(strpos($mystring, $find) . "<br>"); 
if (strpos($mystring, $find) >= 0) { 
    echo("found"); 
} else { 
    echo("not found"); 
} 

这将给:发现

$mystring = "/abc/def/hij"; 
$find = "/fffff"; 

echo(strpos($mystring, $find) . "<br>"); 
if (strpos($mystring, $find) >= 0) { 
    echo("found"); 
} else { 
    echo("not found"); 
} 

输出: [空白] 发现

现在如果我更改比较器并使用“!= False”而不是“> = 0”

$mystring = "/abc/def/hij"; 
$find = "/fffff"; 

echo(strpos($mystring, $find) . "<br>"); 
if (strpos($mystring, $find) **!= false**) { 
    echo("found"); 
} else { 
    echo("not found"); 
} 

这适用于几乎所有情况下,除非我寻找的子字符串的开头。例如,这将输出“找不到”:

$mystring = "/abc/def/hij"; 
$find = "/abc"; 

echo(strpos($mystring, $find) . "<br>"); 
if (strpos($mystring, $find) != false) { 
    echo("found"); 
} else { 
    echo("not found"); 
} 

那么我该如何做到这一点?我只是想知道,如果在字符串中存在一个子,它应该给我“真”,如果子是开头或整个字符串...

回答

2

我发现了什么问题...我需要使用!==虚假的,而不是!= ... AAAAH,PHP。

+1

因此,有下strpos描述此文件页上的“返回值”的一大警示。 http://us2.php.net/manual/en/function.strpos.php – 2009-06-17 03:12:09

4

测试使用!==操作。这将比较类型和值,而不是仅仅值:

$mystring = "/abc/def/hij"; 
$find = "/abc"; 

echo(strpos($mystring, $find) . "<br>"); 
if (strpos($mystring, $find) !== false) { 
    echo("found"); 
} else { 
    echo("not found"); 
}