Page 1 sur 1

Enigme?

Posté : 02 janv. 2011, 16:54
par jdelorme
Bonjour à tous, et bonne année!
je suis sur un problème depuis ce matin auquel je ne trouve pas de solution. Pourtant, cela paraît très simple, mais bon :(

Voilà, j'extraie d'un flux XML constant, un des champs (<operation>) que je mets dans la variable $operationHipay . En l'affichant par echo, la valeur de cette variable est "capture", normal.
Le problème est que si je fais une condition, il semblerait que non, cette variable ne contient pas la chaîne "capture"! Voir code ci-dessous. quelqu'un aurait-il la gentillesse de m'aider? Je continue à chercher de mon côté. Si je trouve quelque chose, je vous tiendrai au courant.
Merci beaucoup.

Code : Tout sélectionner

<?php $xml_status = '<?xml version="1.0" encoding="UTF-8"?> <mapi><mapiversion>1.0</mapiversion><md5content>0a691fe797cce497d9015682c44630e1</md5content><result><operation>capture</operation><status>ok</status><date>2011-01-01</date><time>21:34:29 Europe/Paris+0100</time><transid>4D1F8F7E02261</transid><origAmount>19.69</origAmount><origCurrency>EUR</origCurrency><idForMerchant></idForMerchant><emailClient>[email protected]</emailClient><merchantDatas><_aKey_key1>110102-110316-4047</_aKey_key1><_aKey_key2>value 2</_aKey_key2><_aKey_key3>value 3</_aKey_key3></merchantDatas><refProduct0>Awatronic</refProduct0></result></mapi>'; //Extraction operation $longueur_xml = strlen($xml_status); $position_start = strpos($xml_status, '<operation>'); $position_stop = strpos($xml_status, '</operation>'); $operationHipay = substr($xml_status, $position_start, ($position_stop - $position_start)); echo $operationHipay . '<br>'; if($operationHipay == 'capture') { echo 'ok'; } else { echo 'nok'; } ?>

Re: Enigme?

Posté : 02 janv. 2011, 17:01
par stealth35
je te conseil d'utiliser les outils adapter pour lire du xml, comme SimpleXML ou DOMDocument :wink:

Re: Enigme?

Posté : 02 janv. 2011, 17:07
par jdelorme
Bonjour stealth35,
j'ai un peu regardé la doc sur DOMDOcument, mais je trouve ça assez compliqué pour mon application (je débute).
Je n'ai qu'un seul flux XML à lire, et toujours formé de la même façon. D'après mon idée, il suffirait d'extraire les données d'une variable chaîne reçue par POST, puisqu'elles sont toujours à la même place.
Pas simple tout ça :)

Re: Enigme?

Posté : 02 janv. 2011, 17:09
par stealth35
Bonjour stealth35,
j'ai un peu regardé la doc sur DOMDOcument, mais je trouve ça assez compliqué pour mon application (je débute).
Je n'ai qu'un seul flux XML à lire, et toujours formé de la même façon. D'après mon idée, il suffirait d'extraire les données d'une variable chaîne reçue par POST, puisqu'elles sont toujours à la même place.
Pas simple tout ça :)
puisque tu lis du XML SimpleXML répond plus a ton besoin

Re: Enigme?

Posté : 02 janv. 2011, 17:13
par jdelorme
Ok, merci stealth35, je suis en train d'essayer tout ça :)

Re: Enigme?

Posté : 02 janv. 2011, 17:19
par stealth35
c'est quand même plus simple : :wink:
$xml_status = '...';

$xml = simplexml_load_string($xml_status);

if($xml->result->operation == 'capture')
{
    echo 'ok';
}
else
{
    echo 'nok';
}

Re: Enigme?

Posté : 02 janv. 2011, 17:28
par jdelorme
Il est vrai :D
Merci de ton aide!