Enigme?

Petit nouveau ! | 4 Messages

02 janv. 2011, 16:54

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'; } ?>

ViPHP
ViPHP | 5462 Messages

02 janv. 2011, 17:01

je te conseil d'utiliser les outils adapter pour lire du xml, comme SimpleXML ou DOMDocument :wink:

Petit nouveau ! | 4 Messages

02 janv. 2011, 17:07

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 :)

ViPHP
ViPHP | 5462 Messages

02 janv. 2011, 17:09

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

Petit nouveau ! | 4 Messages

02 janv. 2011, 17:13

Ok, merci stealth35, je suis en train d'essayer tout ça :)

ViPHP
ViPHP | 5462 Messages

02 janv. 2011, 17:19

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';
}

Petit nouveau ! | 4 Messages

02 janv. 2011, 17:28

Il est vrai :D
Merci de ton aide!