Probleme XML avec PHP
Résolu
nikool
-
nikool -
nikool -
Bonjour,
voici ma prise de tête du jour :
Mon but ultime :
Je cherche à mettre à jour un fichier XML à l'aide de PHP, afin de le lire dans une animation flash.
voici mon problème :
j'ai un fichier XML tout simple que je lis à l'aide de PHP. Je récupère les valeurs des balises XML que je place dans un formulaire afin de pouvoir les modifier. Un champ de mon formulaire est un textarea. C'est ce champ qui me pose problème. Lorsque j'affiche le contenu récupéré dans le textarea, je ne conserve pas les retours à la ligne, malgré tous mes efforts (nl2br, str_replace, br2nl)...
qqun pourrait-il m'aider ?
Merci beaucoup d'avance !!!
Voici le code du XML: nom de fichier : myXML.xml
et voici ma page PHP : nom de fichier : index.php
voici ma prise de tête du jour :
Mon but ultime :
Je cherche à mettre à jour un fichier XML à l'aide de PHP, afin de le lire dans une animation flash.
voici mon problème :
j'ai un fichier XML tout simple que je lis à l'aide de PHP. Je récupère les valeurs des balises XML que je place dans un formulaire afin de pouvoir les modifier. Un champ de mon formulaire est un textarea. C'est ce champ qui me pose problème. Lorsque j'affiche le contenu récupéré dans le textarea, je ne conserve pas les retours à la ligne, malgré tous mes efforts (nl2br, str_replace, br2nl)...
qqun pourrait-il m'aider ?
Merci beaucoup d'avance !!!
Voici le code du XML: nom de fichier : myXML.xml
<?xml version="1.0" ?><menuTitle>Menu Noel</menuTitle><menuContent>Entrée à base de pousse de bambou234<br />sadadasd<br />asdasda</menuContent>
et voici ma page PHP : nom de fichier : index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>admin</title> <style type="text/css"> body{ margin:0px; padding:0px; font-family:Arial, Helvetica, sans-serif; font-size:12px; } #header{ height:40px; background-color:#666666; padding-top:20px; padding-left:20px; color:#FFFFFF; font-size:20px; font-weight:bold; } #content{ width:900px; margin:0 auto; margin-top:40px; } fieldset{ padding:20px; } label{ float:left; width:80px;; margin-right:10px; text-align:right; font-weight:bold; } input{ font-family:Arial, Helvetica, sans-serif; font-size:12px; width:500px; } input[type=submit]{ font-family:Arial, Helvetica, sans-serif; font-size:12px; width:100px; } textarea{ font-family:Arial, Helvetica, sans-serif; font-size:12px; width:500px; height:300px; } </style> </head> <body> <?php /* br2nl for use with HTML forms, etc. */ function br2nl($text) { /* Remove XHTML linebreak tags. */ $text = str_replace("<br />","",$text); /* Remove HTML 4.01 linebreak tags. */ $text = str_replace("<br>","",$text); /* Return the result. */ return $text; } if(isset($_POST['submit'])){ // les données du formulaire sont envoyées au server // -------------------------------------------------------- // on convertit les données recues du textarea pour etre compatible avec flash $myMenu = nl2br($_POST["myMenu"]); $myMenu = str_replace("\n", "", $myMenu); $myMenu = str_replace("\r", "", $myMenu); // on créé le contenu du nouveau XML en récupérant les données du formulaire $createdXML = '<?xml version="1.0" ?><menuTitle>'.$_POST["myTitle"].'</menuTitle><menuContent>'.$myMenu.'</menuContent>'; // on définit le fichier à modifier $myFile = "myXML.xml"; // ouverture du fichier XML en mode écriture $fh = fopen($myFile, 'w') or die("can't open file"); // on écrit le nouveau contenu du fichier fwrite($fh, $createdXML); // on ferme le fichier une fois qu'il est modifié fclose($fh); // on redirige la navigation pour afficher à nouveau la page de l'admin header('Location: index.php'); }else{ // aucune données n'a été envoyée, on affiche le formulaire // -------------------------------------------------------- // on définit une variable qui va contenir le fichier XML $xml = ''; // on ouvre le fichier XML en mode lecture $f = fopen('myXML.xml', 'r'); // on effectue une boucle pour récuperer toutes les données du fichier XML while($data = fread($f, 4096)){$xml .= $data;} // une fois les données du XML lues et enregistrées dans la variable $xml, on ferme le fichier fclose($f); // on parse le XML pour récuperer le contenu des balises, les variables $menuTitle et $menuContent contiennent les éléments de notre XML preg_match_all( "/\<menuTitle\>(.*?)\<\/menuTitle\>/", $xml, $menuTitle); //echo($menuTitle[1][0]); preg_match_all( "/\<menuContent\>(.*?)\<\/menuContent\>/", $xml, $menuContent); //echo($menuContent[1][0]); // on convertit les retours à la ligne pour un affichage optimal dans le textarea //$menuContent = str_replace('<br>', ' \n ', $menuContent[1][0]); ?> <div id="header">Administration</div> <div id="content"> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <fieldset> <legend>Menu content</legend> <label for="name">Titre</label> <input type="text" value="<?php echo($menuTitle[1][0]); ?>" name="myTitle" /><br /> <label for="mail">Menu</label> <textarea name="myMenu" wrap="off"><?php echo(br2nl($menuContent[1][0])); ?></textarea> </fieldset> <input type="submit" name="submit" /> </form> </div> <?php } ?> </body> </html>
A voir également:
- Probleme XML avec PHP
- Xml download - Télécharger - Édition & Programmation
- Easy php - Télécharger - Divers Web & Internet
- Office xml handler - Télécharger - Traitement de texte
- Driveimage xml - Télécharger - Sauvegarde
- Expert php pinterest - Télécharger - Langages
2 réponses
Salut,
merci, je vais regarder avec simpleXML.. mais en attendant, pour faire fonctionner mon bout de code, j'ai simplement changé la fonction suivante :
en :
merci encore..
merci, je vais regarder avec simpleXML.. mais en attendant, pour faire fonctionner mon bout de code, j'ai simplement changé la fonction suivante :
function br2nl($text) { /* Remove XHTML linebreak tags. */ $text = str_replace("<br />","",$text); /* Remove HTML 4.01 linebreak tags. */ $text = str_replace("<br>","",$text); /* Return the result. */ return $text; }
en :
function br2nl($text) { /* Remove XHTML linebreak tags. */ $text = str_replace("<br />","\n",$text); /* Remove HTML 4.01 linebreak tags. */ $text = str_replace("<br>","\n",$text); /* Return the result. */ return $text; }
merci encore..