2011-07-19 68 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