2012-07-16 75 views
0

我的問題很簡單:PHP strpos函數中針的長度是否有限制?

  1. 是否有限制到什麼strpos針的長度可以嗎?
  2. 如果是這樣,有沒有辦法避開它?

看來我的長針不會觸發某個位置,而我的長度較短的針可以。

例如:

if (strpos($data, "You were not able to complete this job. Please try again at a later date. Do not hit your back button.") !== false) 
//solves as false 

if (strpos($data, "You were not able") !== false) 
//returns the position 
+0

請張貼演示該問題用例。 – nickb 2012-07-16 21:58:11

+1

你能舉個例子嗎? – 2012-07-16 21:58:17

+1

定義「長」針。多久了?似乎這裏的問題可能與case或字符集相關,'strpos()'執行二進制比較,並不考慮這些。如果您通過的針頭太長而無法應付,最可能的結果是內存不足或段錯誤。 – DaveRandom 2012-07-16 22:02:56

回答

4

的問題不在於此:雖然可能有一些實施限制(例如2GB?),它是不是這個限度。

大概長針只是不匹配輸入:

  • 多餘的空格?記得瀏覽器會「連續」刪除連續的HTML空格。因此,來自瀏覽器的「copy'n'paste」可能與cURL讀取的不同。 (這也可以延伸到其他源,在瀏覽器中不呈現爲文本)。

  • 看起來像空間但事實並非如此嗎? (製表符,換行符?)

  • 或者別的東西,使輸入(和/或針刺),以不同於預期..

+0

謝謝。我不用我的cURL執行來設置標題或編碼選項。你認爲可能會發生一些問題嗎?如果我設置編碼並將瀏覽器選項設置爲某種標準,則可能會返回更普通的頁面? – KiloJKilo 2012-07-16 22:24:19

+0

@KiloJKilo我會使用像fiddler2這樣的工具來進行調查。它可以用於以多種不同的形式查看實際數據,並可以揭示使用的客戶端(和/或標題)是否會改變服務器的響應。 – 2012-07-16 22:28:03

+0

謝謝。我會這樣做 – KiloJKilo 2012-07-16 22:30:33

相關問題