IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[XML] Distinguer 2 type de contenu : XML / PDF dans un retour CURL


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 12
    Points : 9
    Points
    9
    Par défaut [XML] Distinguer 2 type de contenu : XML / PDF dans un retour CURL
    Bonjour à tous...

    Je poste un petit message car je suis confronté à une difficulté sur la lecture d'un flux de données que je recois d'un webservice.

    Mon probleme est le suivant :
    Je récupere via CURL une réponse d'un webservice que l'on interoge, et qui me retourne en réponse selon le cas, soit :
    1- simplement un XML :
    le return["cr"] contient directement des données au format <?xml version='1.0' encoding='utf-8'?>
    que je parviens à parser et stocker en bdd directement (mieux encore je stocke un log fichier, et les données utilisateurs en bdd)

    2- Une combinaison XML + PDF :
    Le return["cr"] contient alors des données au format suivant :

    ------=_Part_4_12345678.1234567891234
    Content-Type: text/xml; charset=UTF-8
    Content-Transfer-Encoding: binary
    Content-Id: <132465789132456789>

    <?xml version='1.0' encoding='utf-8'?>
    ..... Mon contenu XML ....
    ------=_Part_4_12345678.1234567891234
    Content-Type: application/octet-stream
    Content-Transfer-Encoding: binary
    Content-Id: <fichier>

    %PDF-1.4
    ......Mon contenu PDF .....
    %%EOF

    ------=_Part_4_12345678.1234567891234--

    Ma question est donc la suivante :
    Comment je fais pour :

    Extraire la chaine XML que je place dans une chaine $postdata
    extraire la chaine PDF que je place dans une chaine $fichier_pdf...

    Merci pour votre aide ...

    Tdldp

  2. #2
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Résolu, et pour ceux que ca interesse...
    J'ai finalement utilisé une fonction... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    function xmlpdf($contenu)
    {
    	// Récupération du nom du fichier PDF
    	$nomficpdf = '';
    	$pos = strpos($contenu, '.pdf');
    	if (!($pos === false))
    	{
    		$val1 = substr($contenu, 0, $pos+4);
    		$pos = strrpos($val1, '>');
    		if (!($pos === false))
    		{
    			$nomficpdf = substr($val1, $pos+1, strlen($val1)-($pos+1));
    		}
    	}
     
     
    	//******** XML *********//
    		// Définition des bornes pour l'extraction du XML
    		$detect_deb_xml = '<?xml';
    		$detect_fin_xml = '</soapenv:Envelope>';
    		// Détection des bornes pour l'extraction du XML
    		$debxml = strpos($contenu, $detect_deb_xml);
    		$finxml = strpos($contenu, $detect_fin_xml);
    		// Extraction du XML
    		$xml = substr($contenu, $debxml, $finxml - ($debxml - strlen($detect_fin_xml)));
    	//******** XML *********//
     
     
    	//******** PDF *********//
    		// Définition des bornes pour l'extraction du PDF
    		$detect_deb_pdf = '%PDF';
    		$detect_fin_pdf = '%%EOF';
    		// Détection des bornes pour l'extraction du PDF
    		$debpdf = strpos($contenu, $detect_deb_pdf);
    		$finpdf = strpos($contenu, $detect_fin_pdf);
    		// Extraction du PDF
    		$pdf = substr($contenu, $debpdf, $finpdf - ($debpdf - strlen($detect_fin_pdf)));
    	//******** PDF *********//
     
     
    	if ($debxml >= 0 && $debxml < 10) // Si le contenu est un simple XML
    	{
    		// Récupération du XML
    		return $contenu;
    	}
    	else // Si le contenu contient un fichier PDF
    	{
    		if ($nomficpdf != '') // Si le nom du fichier PDF a bien été trouvé
    		{
    		    // Génération du fichier PDF
    			$fic = fopen('/home/pdf/'.$nomficpdf, "w");
    			fputs($fic, $pdf);
    			fclose($fic);
    		}
    		// Récupération du XML
    		return $xml;
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Champ type de contenu non affiché dans les listes en création
    Par lflorca dans le forum Développement Sharepoint
    Réponses: 1
    Dernier message: 23/10/2012, 10h54
  2. Réponses: 1
    Dernier message: 30/03/2009, 16h09
  3. librairie de conversion xml -> pdf
    Par qouify dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 08/05/2006, 09h10
  4. XML -> PDF
    Par ebaynaud dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 12/10/2004, 14h09
  5. Parser XML -> PDF
    Par ebaynaud dans le forum Modules
    Réponses: 2
    Dernier message: 12/10/2004, 14h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo