2011-07-19 45 views
1

我有一个php文件,它将搜索服务器上所有包含字符串的文件的文件。如果我硬编码strpos()中的搜索词,它工作正常。但如果我尝试使用$字符串它不会工作当搜索文件时,Php strpos无法正常工作

works: 
$file = file_get_contents($dir); 
if(strpos($file, 'find me')) 

does not work: 
$findme='find me'; 
$file = file_get_contents($dir); 
if(strpos($file, $findme)) 

任何想法?

编辑:if(strpos($ file,'find me')!== false)不会使它工作。

解决:发现我必须在抽动 如果(strpos($文件,“$ findme”))

+2

如果检查'if(strpos($ file,$ findme)!== false)'作为0-索引匹配,将会导致错误。 (注意[文档中的警告](http://php.net/manual/en/function.strpos.php#refsect1-function.strpos-returnvalues)) –

+0

我也试过,我也试过!strpos()似乎$文件和$ findme不被视为字符串,我有另一个领域与str_replace类似的问题,将不会工作,除非我硬编码替换术语 –

+0

你有没有去过[PHP的文档在这个功能] (http://php.net/manual/en/function.strpos.php)?返回类型上有一个很好的红色警告标志。 – Shef

回答

1

嗯,那我跃起出来的第一件事情是,你正在使用strpos不正确;你需要做if(strpos($file, 'find me') !== false)if(strpos($file, $findme) !== false)

3

你应该测试if(strpos($file, 'find me') !== false),因为strpos($file, 'find me')可能是0,如果该文件开头“找我”

0

warning in the docs何况你应该寻找一个明确false而不是仅仅放在功能的条件。因为strpos可能会返回0""(这两者都评估为false),因此条件本身可能会失败。

尝试,而不是执行以下操作:

if(strpos($file,$findme) !== false) 

此外,如果你说你已经尝试这样做,它仍然失败,请尝试运行var_dump($file)以确保草垛确实包含的信息通过搜索。

+0

我知道它包含字符串,因为脚本也搜索自己,并且它将被列为结果之一。当我使用$ findme时,根本没有结果 –

+0

@johnnyCraig:对于'$ file'或'$ findme',有些东西是可疑的,因为(在正常情况下)语句执行完美。 –

+0

不是问题,它显然在'$ findme'中(毕竟,搜索是变化的,而不是干草堆)。 – Wrikken