Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > SimpleXML
SimpleXML Forum d'entraide pour l'extension SimpleXML, qui permet de manipuler des documents XML en PHP (approche DOM).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/12/2010, 15h47   #1
Membre du Club
 
Inscription : novembre 2007
Messages : 757
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 757
Points : 44
Points : 44
Par défaut PHP & Simple XML

Bonjour,

dans le cadre de la creation d'un site multilingue, j'ai opté pour des fihciers xml pour les textes de traduction mais je suis confronté a un petit probleme, et qui ne l'ai peut etre pas pour vous
certain de mes textes contiennent des balises html (<p>, <a href="..." ...>, ...)
je compte creer une interface pour traduire les textes, mais comment gerer ces balises??
1- afficher les textes dans des <textarea>, toutes les balises seront visibles et il faut manier un peu le code pour traduire?

2- afficher les textes dans des <div> qui prendront en compte les balises, et dans ce cas, on ne touche pas du tout au code ?? si c'est la solution recommandée, comment y proceder??

Merci beaucoup de votre aide
redah75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 15h52   #2
Membre éclairé
 
Inscription : août 2007
Messages : 360
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 360
Points : 334
Points : 334
Salut,

Regardes peut être ceci peut t'aider :

http://php.net/manual/fr/function.strip-tags.php

Cordialement,

Mathieu
mathieu44800 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 16h25   #3
Membre du Club
 
Inscription : novembre 2007
Messages : 757
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 757
Points : 44
Points : 44
Bonjour et merci pour ta reponse.

au fait je ne cherche pas a supprimer les balises, je dois bien au contraire les garder
redah75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 16h41   #4
Membre éclairé
 
Inscription : août 2007
Messages : 360
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 360
Points : 334
Points : 334
Dans ce cas la, pourquoi ne pas utiliser "tinymce" ou "ckeditor" ?

Cordialement,

Mathieu
mathieu44800 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 16h54   #5
Membre du Club
 
Inscription : novembre 2007
Messages : 757
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 757
Points : 44
Points : 44
j'y avais pensé mais j'ai decliné cette option car je n'ai pas besoin d'un editeur de texte avancé!
les 3 SEULS balises que j'aurais sont:
<b>, <a>, <p> et peut etre <i> !
redah75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 07h19   #6
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 702
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 702
Points : 3 271
Points : 3 271
Salut

Citation:
certain de mes textes contiennent des balises html
Normalement, il ne faut pas mettre de HTML dans des contenus linguistiques.
Le HTML c'est déjà l'interface, ça peut être un énorme problème de conception pour un usage futur.

Imagine un instant que cette donnée doit être exploitée dans une interface différente, comme un document PDF, Excel, etc ... le HTML va causer problème.
Aussi, aujourd'hui une interface même HTML est prévue pour un écran d'une certaine résolution, mais si demain on prévoit de la rendre sur un smartphone, ce contenu même HTML peu poser problème.

Bon, c'est juste une remarque, mais il faut vraiment éviter de rendre trop spécifique des traductions, on perd en souplesse, surtout en automatisme.
La logique veut que ce soit la partie interface qui met en forme une donnée, linguistique ou autre d'ailleurs.


Mise à part ça, de mon coté j'utilise XMLWriter (fait parti de Php) pour créer des document XML.
Cette classe facilite vraiment leur création tant son usage est simple, de plus prévoit tout ce qu'il faut comme mettre du contenu HTML.

Ensuite, j'utilise de temps à autre SimpleXML ou DomDocument/DomXPath pour récupérer le données XML.

Si c'est la création qui cause problème, avec XMLWriter ça donne par exemple :
(pour la création d'un XML pour un flux RSS)
Code :
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
 
$doc = new XMLWriter();
$doc->openUri('un/chemin/vers/ou/creer/le/fichier.xml');
$doc->setIndent(TRUE);
$doc->startDocument('1.0', 'UTF-8');
$doc->startElement ('rss');
$doc->writeAttribute('version', '2.0'); // RSS
$doc->startElement ('channel'); // CHANNEL
$doc->writeElement('title', 'UN TITRE');
 
... etc ...
 
while ($articles = $sStmt->fetch()) {
    $doc->startElement('item'); // ITEM
 
    // Section CDATA
    $doc->startElement('description');
    $desc = '<p>Un paragraphe</p>
<a href="http://wwwdomaine.com">Un lien</a>
<i>italic</i>';
    $doc->writeCdata($desc);
    $doc->endElement();
    // FIN Section CDATA
 
    $doc->endElement(); // Fin élément ITEM
}
... etc ...
$doc->endElement(); // Fin élément CHANNEL
$doc->endElement(); // Fin élément RSS
$doc->flush();
Chaque élément qui contient du contenu genre HTML est créé dans une section CDATA.
Au final, cette partie génèrera ceci :
Code :
1
2
3
<description><![CDATA[<p>Un paragraphe</p>
<a href="http://wwwdomaine.com">Un lien</a>
<i>italic</i>]]></description>
On peu donc faire la même chose "à le mano" au lieu d'utiliser XMLWriter.

Le document étant conforme, la récupération des données peu ce faire avec SimpleXML, ou autre.
Théoriquement il ne devrait pas avoir de problème.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 13h31   #7
Membre du Club
 
Inscription : novembre 2007
Messages : 757
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 757
Points : 44
Points : 44
Salut RunCodePhp, cava?

je sais que c'est deconseillé de mettre du code dans le contenu, mais je suis bien obligé par fois!!
voici un exemple de variable xml:
Code :
1
2
<ma_variable>This message was intended for %s. If this is not you, please ignore this email.&lt;br /&gt;
		Please follow the link below to subscribe/ unsubscribe. &lt;a href="https://www.site.com/account/" style="color: #fff; text-decoration: underline;" target="_blank"&gt;https://www..com/account/&lt;/a&gt;</ma_variable>
pour l'afficher j'utilise simplexml_load_file

d'apres tes exemples, je constate qu'il vaut mieux utiliser le CDATA, pourquoi?? mis a part le fait que je peut mettre directement < au lieu de &lt;

quelle est la difference entre le code que tu m'as filé et
Code :
1
2
3
$sxml->c = "<a href='text.php?t=1&b=2'>Nouvelle valeure</a>";
...
$sxml->saveXML("inc/lib/lang/en/global.xml");
redah75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 12h14   #8
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 702
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 702
Points : 3 271
Points : 3 271
Citation:
d'apres tes exemples, je constate qu'il vaut mieux utiliser le CDATA, pourquoi?? mis a part le fait que je peut mettre directement < au lieu de &lt;
Théoriquement CDATA c'est mieux oui, du coup, faire autrement sera forcément moins bien, non ?
Maintenant, à te de voir, c'était juste pour comme ça avec un exemple de code.


Citation:
1- afficher les textes dans des <textarea>, toutes les balises seront visibles et il faut manier un peu le code pour traduire?

2- afficher les textes dans des <div> qui prendront en compte les balises, et dans ce cas, on ne touche pas du tout au code ?? si c'est la solution recommandée, comment y proceder??
On peu difficile te conseiller dans ce genre de choix, ça dépend beaucoup trop du but recherché, et particulièrement les personnes concernées, les traducteurs (les éditeurs).

S'ils ne maitrisent pas du tout le code HTML, il faudra surement un éditeur intégré tel que "tinymce" ou "ckeditor", et il en existe beaucoup, du plus simple au plus avancé (les 2 cités entre autre).
On peu envisager de faire comme sur ce forum, opter pour du BBCode, les éditeurs sont peut être plus habitués.
Le plus simple serait de rechercher l'éditeur adapté afin de l'intégrer.
Sinon, c'est loin d'être simple à créer son propre éditeur intégré.


L'idéal serait qu'il connaissent le HTML, au moins les bases ou le peu de balises que tu as indiqué, quitte à les former.
Plus besoin d'éditeur dans ce cas là.

Pour ma part, tout existe déjà, il y a juste un choix à faire.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 23h28   #9
Membre du Club
 
Inscription : novembre 2007
Messages : 757
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 757
Points : 44
Points : 44
Citation:
Théoriquement CDATA c'est mieux oui, du coup, faire autrement sera forcément moins bien, non ?
tu as bien raison

Citation:
S'ils ne maitrisent pas du tout le code HTML, il faudra surement un éditeur intégré tel que "tinymce" ou "ckeditor", et il en existe beaucoup, du plus simple au plus avancé (les 2 cités entre autre).
On peu envisager de faire comme sur ce forum, opter pour du BBCode, les éditeurs sont peut être plus habitués.
Le plus simple serait de rechercher l'éditeur adapté afin de l'intégrer.
Sinon, c'est loin d'être simple à créer son propre éditeur intégré.
j'essaie d'eviter les gros editeur tels que tinymce et autres...
concernant BBCode, je comprends pas pourquoi ils utilisent [b] au lieu d'un <b> tout simplement...!!

Citation:
Pour ma part, tout existe déjà, il y a juste un choix à faire.
c'est justement ca le probleme! je ne sais pas trop quoi faire ni choisir
redah75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h19.


 
 
 
 
Partenaires

Hébergement Web