2011-04-29 85 views
1

美好的一天。我正在使用zend + smarty,但我不認爲框架與這個問題有任何關係。我有以下情況:PHP - strstr函數問題

 A script that gets a string from a specified site using an api. The string is retrieved corectly so I'll just assign a string to a variable: 

    $string = 'String retrieved from api.'; 
    $string = strstr($string, "<?xml", false); 

    libxml_use_internal_errors(true); 
    $xml = simplexml_load_string($body); 

聽起來沒問題,看起來不錯。現在的問題。

當我在我們的本地測試機器上使用它時,它就像一場夢。沒有問題。另一方面,在生產機器上,我得到這個:

警告:在第720行(這是strstr行)的/home/prj/include/DatabaseObject/Ctrl.php中strstr()的參數數量錯誤。

我檢查了兩臺機器上的strstr之前的字符串,它們是相同的。同樣在strstr行之後的第二臺服務器上,字符串變爲空(在另一臺服務器上正確轉換)。

我真的不明白它......代碼是一樣的。字符串是一樣的。對我來說有點奇怪。

+2

你有兩個相同的PHP版本? – pconcepcion 2011-04-29 15:51:16

+2

你比較過PHP的版本嗎?這兩臺機器的PHP.ini是否相同? – mellamokb 2011-04-29 15:52:12

+0

你在這裏得到了一點...給我一點時間。 – zozo 2011-04-29 15:53:14

回答

5

在php 5.3中添加了第三個參數「before needle」 - 一個布爾值 - 。很可能您的生產服務器正在運行較早的版本。

看到PHP.net

strstr (string $haystack , mixed $needle [, bool $before_needle = false ])

  • 5.3.0新增可選參數before_needle。