TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
| Page : 1 2 3 4 5 | |||||
| Pseudo | Commentaire | ||||
|---|---|---|---|---|---|
| Page : 1 2 3 4 5 | |||||
Shinrei
|
# Posté le 06/05/2007 11:28:32 | ||||
Hot²![]() Groupe : Membres |
T_T et dire que hier soir je me disais encore que je devrais apprendre à faire ça avec la doc php.
Super tuto, bien rédigé, schématisé... et utile ! (Même si je ne l'utiliserais pas pour faire du zcode )
19/20 parce que la perfection n'existe pas. =) Shinrei. |
||||
nax
|
# Posté le 06/05/2007 13:08:03 | ||||
![]() Groupe : Membres |
C'est bien, mais une erreur :
Dans le schema : Un document XML selon DOM gras contient "Bonjour" et non pas ", ca va ?" et #text contient ", ca va ?" ... 18 |
||||
Cam
|
# Posté le 06/05/2007 16:27:03 | ||||
Have fun !![]() ![]() |
Très bon tuto, bravo.
Et bien joué pour les schémas, illustrations, c'est très réussi. |
||||
Dark_Nix
|
# Posté le 06/05/2007 17:32:53 | ||||
|
PHP addict ... Groupe : Membres |
Très bien rédigé, de beaux schémas très bien expliqueés, c'est le premier tuto (mis à part ceux de m@teo car ils ne sont pas comparables) que j'ai très bien compris du premier coup. Je n'utiliserais pas ça pour parser mon zcode (j'utilise ASP) mais il est parfait ! | ||||
Diti
|
# Posté le 06/05/2007 18:07:12 | ||||
Manchot empereur![]() Groupe : Membres |
J'mets 18, la technique est différente de l'autre tuto et elle me semble un peu plus lourde
|
||||
Nelty
|
# Posté le 06/05/2007 18:30:17 | ||||
|
Persévérer c'est avancer ! Groupe : Membres |
Ce tutos est vraiment très bien fait, bravo
Je mets 19, très bon tutos ! Et bravo aussi pour les shémas
PythonÀ l'ouïe de ce mot, vous pouvez penser à deux choses. La première, c'est le serpent. La deuxième, c'est le langage de programmation. Étant donné que nous sommes sur un site basé autour de ce dernier domaine, je vais plutôt m'intéresser au langage. ![]() Concrètement, Python c'est quoi ?Python est comme je l'ai indiqué plus haut un langage de programmation interprété. Il est placé sous une licence libre et est un langage dit «multi-plateforme» (il fonctionne sous Windows, Mac et Linux). Comme beaucoup, il est à la base exploitable en console, mais l'utilisation de GUI est envisageable pour faire une application graphique. AtoutsUn des gros avantages de Python est qu'il est très simple à l'écriture et vous permet d'adopter de bonnes méthodes de programmation, notamment au niveau de la lisibilité du code. En effet, ici, plus d'accolades ou autres pour indiquer un bloc d'instruction (if, else, while, ...), tout se fait par indentation. Ainsi, un tel code en PHP : Code : PHP
Donnera ceci en Python : Code : Python
Les deux afficheront (à peu près) : Citation : Résultat : 2,4,6 Remarquez la simplification du code pour effectuer une action très simple. Il a aussi l'avantage d'intégrer de nombreuses bibliothèques pour effectuer une multitude d'actions très diverses, dans tous les domaines. math pour les opérations mathématiques par exemple. Pour finir, il est aussi exploitable sur le Web. Pour l'utiliser, il vous faudra un hébergeur l'acceptant et peut-être inclure certaines bibliothèques selon vos besoins (je pense à CGI pour les traitements de formulaire). À titre d'information, alwaysdata accepte le Python et est gratuit. Où apprendre ?Question évidemment indispensable si vous êtes intéressés... La première, la plus évidente, c'est la documentation officielle de Python, malheureusement uniquement disponible en anglais. Mais il existe un cours très réputé rédigé par un certain Gérard Swinnen qui est disponible en français. S'il ne vous plaît pas, Google (ou autre moteur de recherche) est votre ami ! Où se faire aider ?Peut-être une question qui ne vous viendra pas à l'esprit immédiatement, mais quand vous aurez un problème que vous ne saurez résoudre... Ne vous inquiétez pas, d'autres gens sont passés avant vous et sont prêts à vous aider ! Dans un premier temps, je vous conseille de passer sur IRC, channel #python, serveur irc.epiknet.org . Vous y trouverez un petit groupe de gens qui pourront peut-être vous aider. Après, si vous n'avez pas résolu votre problème, il reste le forum « Autres langages » où des Pythoneurs viennent de temps en temps. Enfin, si votre problème est lié à l'utilisation d'une bibliothèque, n'oubliez pas d'aller consulter sa documentation (très souvent en anglais). |
||||
bracor
|
# Posté le 06/05/2007 18:40:21 | ||||
Ravioli.![]() Groupe : Membres |
Super, JUSTE ce que j'attendais, milles merci
par contre: dans ton script, tu ouvre une balise span, et ferme une balise div: Code : HTML <span class="italique">
Code : HTML </div>
dans les deux tableaux qui servent à ouvrir et fermer les balises. edit: désolé trompé de ligne
Et il manque un argument quand tu fait appel à la fonction parsage_normal. On peut éviter le bug de cette facon: Code : PHP function parsage_normal($noeud, $contenu_a_inserer='')
j'avais trouvé quelques autres éreurs mais je m'en souvient lpus mais enfin, ça ne rabaisse pas la qualitée de ton tuto.
merci encore, 19. edit: pour le code de l'image, pour plus de conformitée, rajouter "/" avant de fermer la balise :
Code : PHP 'image' => '<img src="$1" alt="$2" />',
|
||||
madmac
|
# Posté le 06/05/2007 18:53:26 | ||||
What the freak ?![]() Groupe : Membres |
Bonjour,
merci pour vos commentaires élogieux .
Je viens de corriger le tuto, et j'ai du changer le lien de l'image de l'arbre XML. Celle-ci n'apparait donc plus pour le moment, mais la validation de la modif ne saurait tarder.
Edition : C'est bon, les modifs ont déjà été prises en compte par les validateurs. Quelle rapidité !
Arnaud => merci, corrigé ! Diti => C'est — peut-être — plus lourd, mais tu verras que le nombre de possibilités offertes par DOM ne sont pas limitées au parsage. Bracor => Euh, je crois que tu te trompes pour la première erreur, je ferme bien avec un span. Sinon, pour le contenu_a_inserer = '', corrigé, merci ! Si vous voyez d'autres erreurs, n'hésitez pas. Ciao |
||||
damsou
|
# Posté le 06/05/2007 19:40:57 | ||||
![]() Groupe : Membres |
Pas eu le temps de tout lire, mais pour ce que j'ai vu, c'est exellent...
Cela doit faire 2/3 mois que je cherche un bon tuto sur le sujet. Je l'ai trouvé
Allez zou! Un petit 20
Ne cherchez pas la faute chez vos voisins, car c'est peut-être vous qui l'avez commise ... |
||||
RévoX
|
# Posté le 06/05/2007 19:55:03 | ||||
fr.hypo-theses.com![]() Groupe : Membres |
Très bon tuto sur un sujet pas facile.
Il y a des erreurs comme balise_2 pour l'image qui doit se terminer par /> Pour Code : PHP if($enfant->hasChildNodes() == true) // ... s'il a lui-même des enfants
{ $accumulation .= parsage_enfant($enfant); // Dans ce cas, on revient sur parsage_enfant } Parsage_enfant ne contient qu'un argument alors qu'il devrait en avoir 2. Si on a un forum avec 50 messages, il faut générer 50fichier XML ?
Si tel est le cas, c'est pas trop lourd ? Edit : je viens d'essayer le code et si je ne précise pas "<?xml version="1.0" encoding="ISO-8859-1" ?>" il me renvoie des erreurs. Hypo-thèses : www.hypo-theses.com (un site passé dans les projet des zéros et nominé dans la catégorie meilleur site communautaire") a été traduit et est maintenant devenu en.hypo-theses.com et fr.hypo-theses.com Sachez que nous recrutons des gens passionnés par les sciences |
||||
Bougie
|
# Posté le 06/05/2007 20:53:05 | ||||
Solaris beginner![]() Groupe : Membres |
Tres bon tuto
Cependant, le coop de str_replace pour changer le nom d'un attribut, je trouve ça moyen
|
||||
madmac
|
# Posté le 06/05/2007 21:02:10 | ||||
What the freak ?![]() Groupe : Membres |
Salut,
Revox, balise_2 ne contient rien car $balise_1['image'] contient la fermeture de l'image (je viens de voir qu'elle est imparfaite, ça va être corrigé sous peu). Pour finir, parsage_enfant ne demande qu'un argument, je ne comprends pas... peut-être que tu parles de parsage_normal ? En ce qui concerne les fichiers xml, ça dépend de ton organisation. Tu peux très bien créer un fichier XML avec des balises : Code : XML <zcode>
<forum nom="Forum 1"> <message numero="1">Texte 1 <gras>texte 2</gras></message> <message numero="2">Texte 1 <italique>texte 2</italique></message> <message numero="3">Texte 1 </message> </forum> <forum nom="Forum 2"> <message numero="1">Texte 1 <gras>texte 2</gras></message> <message numero="2">Texte 1 <italique>texte 2</italique></message> <message numero="3">Texte 1 </message> </forum> </zcode> Ou encore, te servir de MySQL pour stocker les messages comme avec un forum classique — même si ça doit être plus rapide par fichier je pense, ça marche comme du cache. Dans ce cas, tu récupères les messages normalement mais tu les parses comme des chaînes de caractère. Enfin, oui, il faut mettre l'encodage en haut du fichier. Je pensais que dire "Respecter les règles élémentaires du XML" était suffisant, parce que préciser l'encodage est indispensable dans tout bon fichier xml. Ce n'est peut-être pas suffisamment clair, je vais voir si je l'ajoute. Bougie, c'est sûr qu'il existe d'autres moyens que cela, mais ça a l'avantage d'être compréhensible et assez visuel. Libre à toi de choisir la manière qui te convient le plus, ou la plus rapide .
|
||||
RévoX
|
# Posté le 06/05/2007 21:51:17 | ||||
fr.hypo-theses.com![]() Groupe : Membres |
Décidément, j'ai dû trop boire cette aprèm ! Je parlais bien évidemment de $balise_1 qui doit être 'image' => '<img src="$1" alt="$2" />' et non 'image' => '<img src="$1" alt="$2">'
Pour parse_enfant je voulais parler de parse_normal. Or dans parse_enfant tu écrits : Code : PHP else // ... s'il n'en a plus !
{ $accumulation .= parsage_normal($enfant); // On parse comme un noeud normal } Il manque donc un argument ! Désolé pour toutes mes erreurs. Comme c'est indiqué sur la page du SdZ, les messages sont tous enregistrés dans une BDD pourtant ils utilisent ta technique de parsage aussi. Je suppose donc qu'ils utilisent loadXML mais ça me semble alors compliqué et être une perte de temps. Je suis curieux de savoir comment ils s'arrangent... Hypo-thèses : www.hypo-theses.com (un site passé dans les projet des zéros et nominé dans la catégorie meilleur site communautaire") a été traduit et est maintenant devenu en.hypo-theses.com et fr.hypo-theses.com Sachez que nous recrutons des gens passionnés par les sciences |
||||
madmac
|
# Posté le 06/05/2007 22:10:05 | ||||
What the freak ?![]() Groupe : Membres |
Je crois bien que tu n'es pas obligé de préciser la valeur des arguments d'une fonction si ça n'a pas d'utilité. Etudie quelques fonctions PHP, certaines proposent des arguments facultatifs. En fait, le seul danger de cette pratique est que la valeur de l'argument non-précisé contienne autre chose, peut être liée à une utilisation antérieure de la fonction. Pour parer à cette éventualité, on initialise la variable dans la déclaration de la fonction (merci bracor de m'avoir rappelé l'oubli... ). Comme ça, à chaque fois que l'on appelle fonction, l'argument s'initialise comme un grand .
Par contre, je suis fautif pour l'image.
Je vais modifier ça... En ce qui concerne les messages stockés dans la bdd, c'est pas vraiment plus compliqué, peut-être plus lent. Mais après, c'est toujours délicat de dire que telle méthode est plus lente qu'une autre. Ce qu'on sait, c'est qu'aujourd'hui, avec le nombre de requêtes SQL qu'ils ont et l'usage hyper-actif du zcode, ils doivent quand même dédier un serveur pour SQL... Aucune solution n'est idéale. La bdd permet tout de même de faire des trucs assez souples, c'est plus dur de faire des recoupements par exemple avec des fichiers XML (voir par auteur, par date de création, par ordre alphabétique...). |
||||
grunk
|
# Posté le 06/05/2007 22:40:16 | ||||
Not'dead but bien raide![]() Groupe : Membres |
Excellent tutoriel , qui permet d'approcher le DOM sans trop de souçis pour les débutants
Cependant une question me brule les lèvres Quelqu'un à t'il essayer un comparatif de performance entre un "zcode XML" et un "zcode expressionrégulieriser :p" je serais assez curieux de savoir le résultat
|
||||
Bougie
|
# Posté le 06/05/2007 22:47:44 | ||||
Solaris beginner![]() Groupe : Membres |
J'ai pas fait un bench, mais je crois que avec dom, si c'est bien fais, c'est plus rapide
|
||||
madmac
|
# Posté le 06/05/2007 23:27:10 | ||||
What the freak ?![]() Groupe : Membres |
J'avais essayé de le faire en REGEX, mais j'ai arrêté parce que j'ai failli me suicider tellement c'est inintéressant, alors j'ai fait que pour quelques balises. En gros, ça donnait presque le même temps d'éxécution, je pense donc que DOM est aussi rapide que les expressions régulières, voire plus mais je n'en suis pas sûr. De toute manière, le grand avantage de DOM ne se trouve pas dans sa rapidité, mais dans toutes les fonctionnalités qu'il offre, et ça va plus loin que le simple parsage...
|
||||
bracor
|
# Posté le 07/05/2007 17:38:43 | ||||
Ravioli.![]() Groupe : Membres |
Re, je poste ici plutot que par mp parcque ca peut peut-être servir aux autres, en fait j'aimerais savoir (ou au moin une piste) de quelle façon m'y prendre pour ne pas supprimer les balises "html" (strong, script...) mais les remplacer par leur entitée équivalente ("<strong>" => "<strong>").
J'ai un peut tripatouillé le code et relu ton tuto, mais je voit pas trop comment. merci par avance
ps: même si ca fait trente fois que je te le dis, super tuto
|
||||
vincent1870
|
# Posté le 07/05/2007 18:05:33 | ||||
![]() Groupe : Membres |
Rien à dire, impec, clair et avec de beau schémas Depuis le temps que je cherchais un bon tuto sur le XML, chapeau
Je vais le lire complètement à tête reposée, mais rien qu'en parcourant, j'ai déjà troué la note pour ton tuto : 20/20
Continue et fais-nous d'autre beaux tutos
|
||||
madmac
|
# Posté le 07/05/2007 18:17:20 | ||||
What the freak ?![]() Groupe : Membres |
Si je comprends bien, bracor, tu veux juste éviter de supprimer les balises html ? Est-ce que je peux juste savoir dans quel cadre tu souhaites faire cela ? Si c'est simplement pour remplacer, DOM n'est pas vraiment recommandé à cet effet.
Mais sinon, je ferais dans $balise_1 des nouvelles entrées : Code : PHP '<strong>' => '<strong>');
Ou bien, en fermeture : Code : PHP '</strong>' => '</strong>');
Tu peux aussi très bien ignorer ces balises, et en fin de parsage les remplacer. Edition : mise à jour du tuto -> Balise img fermée correctement
-> Encodage précisé -> Modification d'une suggestion en fin de tuto sur les REGEX, historie d'être en règle avec le Comité de Lutte Contre les Regex Inutiles
|
||||
<arobase/>
|
# Posté le 07/05/2007 19:43:27 | ||||
Li ! Nux. Mmh, linux !![]() Groupe : Membres |
Extra ! J'étais impatient depuis lo moment ou j'ai vu l'énoncé du concours, et bien je suis servi
J'ai réussi à implanter le parseur dans mon site web ! Hourah ! (Bon j'ai du réécrire mes 4 news (et ou c'est encore une phase de test) en "@Code" ( ) Je me suis pas mal battut, j'ai essayé de comprendre le code enfin maintenant je le maitrise. Le problème vient des formes accentuées, une de mes news buggait complètement à cause d'un petit "à" j'aimerai savoir comment ajouter ceci au script, j'ai vu que c'était dans la partie "aller plus loin" mais... j'ai aucune idée, (j'ai quand même fait le plus facile : lancer le script depuis un chaine de caractère )
Merci pour cet excellent tuto, un peu dur au début mais quand on a compris, ça marche tout seul .
Secret (cliquez pour afficher) 20 / 20 PS : pour pouvoir garder le code XML au cours des réédition, je fais le "parsage" "à chaud" (directement dans la page à voir) au lieu d'enregistrer dans ma base de donnée le code préalablement parsé , c'est grave ? (J'ai pas l'impression mais bon
)![]() Tutos : Officiels : [Linux] [Site web] [PHP] Non Officiels : [Blender] [Gimp] [Python] [Ok] [en cours] |
||||
Aeglin
|
# Posté le 07/05/2007 20:23:29 | ||||
|
Groupe : Membres |
J'ai parcouru tres vite fait le tutoriel, mais il y'a une chose qui m'a frappe, c'est la ressemblance avec le module de compilation que j'ai suivi il y'a un an (Utilisant YACC et FLEX) notemment en matiere d'annalyse syntaxique.
Dite moi juste si je me trompe, mais l'approche ne me semble pas tellement differente. Aeglin |
||||
ryan07
|
# Posté le 08/05/2007 09:25:42 | ||||
|
Groupe : Bannis |
Très bien
Merci, c'est super !! |
||||
madmac
|
# Posté le 08/05/2007 11:30:10 | ||||
What the freak ?![]() Groupe : Membres |
@r0b@se => Ben, non t'as raison de faire comme ça, c'est le mieux (parser "à chaud"). Comme ça, si un jour tu veux changer le parseur, t'es pas obligé de te casser la tête à tout réécrire dans ta bdd. Et puis sinon, autant écire direct en html si tu vois ce que je veux dire... C'est comme ça que sur le sdz, quand tu fais une citation, tu peux récupérer le zcode, sinon je vois pas comment faire.
Pour les caractères accentués, tu as pleins de soluces. La plus simple, c'est AVANT de parser, remplacer par un truc du genre "é" par "[e_accent_aigu]", puis APRES avoir parsé tu remplaces [e_accent_aigu] par "é" ou "é", selon ton encodage. Aeglin => Désolé, je ne connais que de très loin YACC et FLEX, mais c'est possible qu'il y ait des points communs. Si quelqu'un sait, je suis curieux... ryan07 => merci
|
||||
<arobase/>
|
# Posté le 08/05/2007 12:31:20 | ||||
Li ! Nux. Mmh, linux !![]() Groupe : Membres |
Si je comprends bien il faut faire dans la fonction "parsage" avant de parser :
Code : PHP $document = preg_replace('#é#', '[e_accent_aigu]', $document);
$document = preg_replace('#è#', '[e_accent_grave]', $document); et après avoir parsé : Code : PHP $resultat_html = preg_replace('#[e_accent_aigu]#', 'é', $resultat_html);
$resultat_html = preg_replace('#[e_accent_grave]#', 'è', $resultat_html); return $resultat_html; Edit : Arf' il doit il y avoir une erreur dans mes regex, le texte est remplacé par une suite de é/è <_<
Citation : Le résultat Ué éééèé éèos moèééééx ... Et cela pour tout les caractères accentué ? Un peu lourd peut-être ? Pour l'encodage, je pense que c'est bon, j'écrivais mes news directement en é,è ... car je les enregistres comme ça : Code : PHP // On encode on enrgistre dans la BDD
$contenu = htmlentities($_POST['contenu'], ENT_QUOTES); // .... Et je les affiches comme ça : Code : PHP // On décode et on affiche
$contenu = html_entity_decode($donnees_news['contenu'], ENT_QUOTES); $contenu = parsage($contenu); // New ! On parse :) //... D'ailleur je sais pas si c'est vraiment utile le codage/décodage des balises Xhtml avec le parseur... Merci de ta patience ! ![]() Tutos : Officiels : [Linux] [Site web] [PHP] Non Officiels : [Blender] [Gimp] [Python] [Ok] [en cours] |
||||
vincent1870
|
# Posté le 08/05/2007 14:56:55 | ||||
![]() Groupe : Membres |
Quelqu'un pourrait-il me donner quelques pistes pour parser XML avec les accents, j'ai un peu (beaucoup ) de mal à les gérer.
Merci d'avance. |
||||
Melian
|
# Posté le 08/05/2007 17:21:30 | ||||
La Vague de IAM![]() Groupe : Membres |
Salut ce tuto est super et je vois que tu le corriges rapidement
Je découvre totalement le XML mais une fois plongé dans le tuto çà me parait simple bon boulot
Par contre j'aimerai tout de même savoir quelque chose que je n'ai renconter ni dans l'un ni dans l'autre des tutos pour parser du XML : Par exemple sur un forum pour que les utilisateurs puissent utiliser le Zcode comment faire?
18/20 (on peut toujours améliorer et j'aurais aimé avoir la réponse à ma question dans ce tuto (je sais je suis lourd xD) ) |
||||
bob_57
|
# Posté le 08/05/2007 17:58:15 | ||||
![]() Groupe : Membres |
Super tuto bien fait, bien illustré
|
||||
ililoyd
|
# Posté le 08/05/2007 18:03:02 | ||||
|
Groupe : Membres |
Très bon tuto 18/20
Code : PHP $resultat_html = preg_replace('#[e_accent_aigu]#', 'é', $resultat_html);
$resultat_html = preg_replace('#[e_accent_grave]#', 'è', $resultat_html); return $resultat_html; En utilisant ce code on remplace les caractères: e,_,a,c,n,t,i,g,u en la lettre é et les caractères r en è PS: j'ai peut-etre oublié une lettre mais vous avez compris l'erreur. Avant l'heure c'est pas l'heure après l'heure c'est plus l'heure. Big-tuto sur XML : |||||||||||||||||||| |
||||
madmac
|
# Posté le 08/05/2007 18:58:18 | ||||
What the freak ?![]() Groupe : Membres |
Salut, d'abord les REGEX sont pas obligatoires pour un simple accent, en fait. str_replace suffirait, je pense. Ca dépend de la méthode que tu préfères. En fait, avec une boucle, str_replace et deux tableaux, tu parses les accents assez facilement. C'est laborieux, je sais, mais pour l'instant, j'avoue mon impuissance à dire mieux.
Au fait, dans ta regex, il y a erreur, il faut un antislash avant tes crochets... une relecture du tuto de M@teo ?
Pour l'encodage, ça dépend. Si ça marche sans, ben pas la peine d'encoder, mais souvent ça plante, ou il risque de confondre avec le html lui-même. C'est vraiment toi qui dois décider, sur ce coup. En ce qui concerne l'utilisation du zCode sur un forum, peut-être pour un prochain tuto... mais c'est pas sûr, en définitive, il n'y a pas grand chose à faire. Pour envoyer : Formulaire [zCode] => Données POST transmises [zCode] => Stockage dans bdd [zCode] Pour récupérer : Requête mysql => Chaîne de caractères [zCode] => Parsage du zCode => Affichage du html On peut voir pour intercaler du cache dans tout ça, pour accélérer un peu le processus et décharger la bdd, m'enfin... en gros c'est ça. Ciao |
||||
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
Fil RSS |
XHTML 1.0 |
CSS 2.0
Édité par Simple IT SARL :
Nous contacter
| Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
391 Zéros connectés |
6 requêtes |
0.0546s (0.0415s)
