2011-04-29 3 views
1

Bonne journée à tous. J'utilise zend + smarty, mais je ne pense pas que le framework ait quelque chose à voir avec le problème. J'ai le scénario suivant:PHP - problème de fonction 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); 

Semble ok, semble ok. Maintenant le problème. Lorsque je l'utilise sur notre machine de test locale, cela fonctionne comme un rêve. Aucun problème du tout. D'autre part, sur la machine de production, je reçois ceci:

Attention: nombre de paramètres incorrect pour strstr() dans /home/prj/include/DatabaseObject/Ctrl.php sur la ligne 720 (c'est la ligne strstr).

J'ai vérifié les chaînes avant strstr sur les 2 machines et elles sont identiques. Aussi sur le deuxième serveur après la ligne strstr la chaîne devient vide (sur l'autre elle est correctement transformée). Je n'ai vraiment pas compris ... le code est le même. La chaîne est la même. Est un peu étrange pour moi.

+2

Avez-vous la même version php sur les deux? – pconcepcion

+2

Avez-vous comparé les versions de PHP? PHP.ini est-il identique entre les deux machines? – mellamokb

+0

Vous avez un point ici ... donnez-moi un moment. – zozo

Répondre

5

Le troisième paramètre "avant l'aiguille" - une valeur booléenne - a été ajouté en PHP 5.3. Il est probable que votre serveur de production exécute une version antérieure.

voir PHP.net

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

  • 5.3.0 Ajout du paramètre optionnel before_needle.