2016-03-07 46 views
1

我試圖使用strpos在另一個字符串中找到一個字符串,但由於某種原因,它不能用於某個字符串,即使它在爲另一個字符串工作。我究竟做錯了什麼?strpos對特定字符串不起作用

<?php 

if (strpos("show me how to dance", "show me")) { 
echo "true1"; 
} 
if (strpos("my name is name", "name")) { 
echo "true2"; 
} 

?> 

結果:

true2 

預期結果:

true1true2 
+4

不可能!你的代碼顯示爲'true2'。因爲位置'0'評估爲'假'。 – AbraCadaver

+0

http://ideone.com/7f88Py ** true2 ** – 2016-03-07 21:14:44

+0

@Dagon對不起,這是一個錯字。我的意思是真實2。但我期待true1和true2。 – frosty

回答

6

strpos返回出現的字符串中的索引(或假如果未找到) 。當此索引爲0時,條件:(strpos("show me how to dance", "show me"))被評估爲false(因爲在PHP中:0 == false爲true)。爲確保找到針(即使在索引0處),您需要使用嚴格比較:

if (strpos("show me how to dance", "show me") !== false) 
+0

啊......這有點奇怪。這不應該是默認情況下? – frosty

+0

@frosty:PHP不是強類型語言(後果類型轉換是隱式的),有時是優點,有時... –

+1

@frosty不,strpos不驗證該字符串包含子字符串,它返回第一個出現的索引,它的兩個不同的任務 –