2011-02-27 129 views
1

我知道那裏有這個功能,但我已經不會嘗試那些以字符「#」工作 使用的是現在的一個IM是PHP檢查一個字符串開頭#

function startsWithChar($needle, $haystack) 
{ 
    return ($needle[0] === $haystack); 
} 

,並返回當我嘗試檢查'#'時爲false。

有沒有人知道一個與'#'字符一起使用的函數?

編輯: 我注意到該函數的工作原理,問題是我試圖用GET來做到這一點。當GET開始於#(search.php?query =#asd)時,可以忽略該字符串被忽略。你知道這個解決方法嗎?

+0

你怎麼知道它用#返回false? – 2011-02-27 00:08:37

+0

雖然你在混合術語。它應該是'$ haystack [0] === $ needle'。 Haystack是我們搜索的地方,針是我們搜索的內容 – 2011-02-27 00:10:25

+0

如果URL以'#asd'結尾,那麼PHP將永遠不會看到它。瀏覽器篩選出散列/錨點名稱。 $ _GET變量將是空的,這就是它失敗的原因。如果你想使這個工作成功,你必須'urlencode()'#'。 – mario 2011-02-27 00:49:07

回答

1

你困惑你的針和乾草堆嗎?

function startsWithChar($needle, $haystack) { 
    return ($haystack[0] === $needle); 
} 

$string1 = 'Test'; 
var_dump(startsWithChar('#',$string1)) ; 

$string2 = '#Test'; 
var_dump(startsWithChar('#',$string2)) ; 
+0

我改變了他們的地方,它仍然返回false,所以這不是問題。 – Kraffs 2011-02-27 00:11:44

+0

@Kraffs你運行過**這個代碼**嗎? – 2011-02-27 00:16:02

+0

@Krufts - 向我們展示您正在使用的數據。只要你的字符串確實以#字符開頭,這個方法就行得通。在測試前var_dump你的針和乾草堆以確認。 – 2011-02-27 00:17:33

0

如何:

function startsWithChar($haystack, $needle){ 
    return mb_strpos($haystack, $needle) === 1; 
} 
+0

也行不通。 – Kraffs 2011-02-27 00:16:39

1

現在你已經編輯,這一切都變得清晰。 URL中的文字'#'字符被解釋爲查詢字符串的結尾和片段的開頭,所以您的腳本只會變得「search.php?query =」。改爲使用%23。詳情請參閱http://en.wikipedia.org/wiki/Percent_encoding

相關問題