2012-07-16 87 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