2013-04-11 198 views
1

在使用strpos沒有成功,我有以下代碼/串: $ids="#222#,#333#,#555#";通過搜索字符串

當我在尋找使用部分:

if(strpos($ids,"#222#")) 

也不會發現它。但是,當我在尋找沒有哈希,它的工作原理使用:

if(strpos($ids,"222")) 

我已經使用strval的搜索參數嘗試過,但是這不會也行。

+0

你試過逃脫哈希? (strpos($ IDS, 「\#222 \#」))。 – tompaman 2013-04-11 13:07:00

回答

6

strpos從0開始計數,如果沒有找到,則返回false。你需要檢查是否與===像這樣的假......

if (strpos($ids, '#222#') === false) // not found 

或者使用!==如果你想相反測試...

if (strpos($ids, '#222#') !== false) // found 

PHP Manual entry以獲取更多信息

+0

謝謝!!!!!這是問題! – Zwen2012 2013-04-11 13:28:24

+0

@ user1824136很高興有幫助!不要忘記標記正確的答案:) – 2013-04-11 13:30:21

0

它按預期工作。 strpos()返回0,因爲您正在搜索的字符串位於單詞的開頭。你需要做一個平等搜索:

更新您的if()聲明如下:

if(strpos($ids, '#222') !== false) 
{ 
    // string was found! 
} 
+0

'strpos()'如果找不到字符串,則返回'false' ..不是-1 – 2013-04-11 13:08:24

+0

我碰到提交後意識到。更新。 – BenM 2013-04-11 13:08:58

+0

在上帝的綠色地球上的其他語言中,這是正確的。不幸的是,PHP使用'FALSE'作爲[哨兵價值](http://en.wikipedia.org/wiki/Sentinel_value)。 – cwallenpoole 2013-04-11 13:09:20

1

你是不是explecitely爲FALSE使用strpos時測試。使用這樣的:

if(strpos($string, '#222#') !== FALSE) { 
    // found 
} else { 
    // not found 
} 

說明:您正在使用它像這樣:

if(strpos($string, '#222#')) { 
    // found 
} 

這有什麼問題嗎?答案:strpos()將返回字符串中找到子字符串的位置。在你的情況下0作爲它在字符串的開頭。但0將被視爲虛假的PHP,除非您發出明確的檢查與===!==

+0

謝謝!!!!!這是問題! – Zwen2012 2013-04-11 13:29:35

0

試試這個:

$ids="#222#,#333#,#555#"; 
if(strpos($ids,"#222#") !== false) 
{ 
    echo "found"; 
} 

,您應該使用!==因爲'#222#'的位置是0th (first)字符。