DomDocument Au secours !!

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Orsam, 14 Mars 2011.

  1. Orsam
    Orsam WRInaute discret
    Inscrit:
    26 Février 2011
    Messages:
    66
    J'aime reçus:
    0
    Bonjour à tous,

    Je cherche depuis plusieurs jours le moyen de modifier mes pages HTML dynamiquement en PHP avec DomDocument (que je ne maitrise pas bien du tout).

    Ce que j'aimerais faire est simple :
    j'aimerais lire un fichier (html) de mon serveur (avec $dom->loadHTMLFile), supprimer un nœud enfant, et le remplacer par un simple texte (sans balise).

    exemple : si mon fichier contient ça :

    Code:
    <html>
        <body id="myBody">
            <b id="myBTag1">my old element</b>
            <b id="myBTag2">my old element</b>
            <b id="myBTag3">my old element</b>
        </body>
    </html>
    
    j'aimerais à la fin avoir ceci :

    Code:
    <html>
        <body id="myBody">
            bonjour
        </body>
    </html>
    
    En gros, "supprime tous les enfants de l'Id "myBody" et met le mot "bonjour". Petite précision, l'appel de l'id est très important.

    Je vous remercie tous d'avance.

    Orsam
     
  2. MikeR
    MikeR WRInaute passionné
    Inscrit:
    9 Janvier 2010
    Messages:
    1 401
    J'aime reçus:
    0
    Tu dois pouvoir faire quelquechose comme :

    Code:
       $body = $dom->getElementById("myBody");
       while ($body->childNodes->length)
        $body->removeChild($body->firstChild);
        $body->nodeValue="bonjour";
    
     
  3. Orsam
    Orsam WRInaute discret
    Inscrit:
    26 Février 2011
    Messages:
    66
    J'aime reçus:
    0
    Bonjour MikeR,

    Et merci pour ton code qui m'a beaucoup aidé. Cependant j'ai trouvé un petit "raccourci"

    Code:
    $toto = $dom->getElementById("myBody")->nodeValue="Boujour"
    Mais, j'ai besoin encore une fois de ton aide...

    Et c'est pour ça que ton code est loin d'être inintéressant... Car je pense qu'avec ton système il est possible supprimer tous les types p et span (par exemple) et de mettre à la place un texte.

    J'explique : voici ce que j'ai. (Je te rassure, c'est un exemple, je ne construit pas mon HTML comme çà :lol: )
    Code:
    <body id="idMyBody">
    	<h1>titre 1</h1>
    	<p>ligne 1</p>
    	<p>ligne 2</p>
    	<span>ligne 3</span>
    	<span>ligne 4</span>
    	<h2>titre 2</h2>
    </body>
    
    Et voici ce que j'aimerais obtenir :
    Code:
    <body id="idMyBody">
    	bonjour
    	<h1>titre 1</h1>
    	<h2>titre 2</h2>
    </body>
    
    Donc, toujours la sélection avec l'id (important) et suppression de toutes les balises que je ne veux pas et insertion d'un texte juste après le "idMyBody"...

    Allé ! je suis sur que tu sais faire :lol: ...

    Encore un grand MERCI !!!!!

    Orsam
     
  4. MikeR
    MikeR WRInaute passionné
    Inscrit:
    9 Janvier 2010
    Messages:
    1 401
    J'aime reçus:
    0
    Ce qui fausse un peu tout c'est que ton "bonjour" ne soit pas un node (un <p> par exemple, ça serait (beaucoup) plus simple....)

    Mois, je ferais par copie selective des nodes de ta source vers un nouvel element en décidant sur le critère type contient "h" . Et juste après la création de ce nouvel élément, je mettrais nodevalue ="bonjour", avant de faire les copies.

    Dis moi si tu as besoin du code...
     
  5. Orsam
    Orsam WRInaute discret
    Inscrit:
    26 Février 2011
    Messages:
    66
    J'aime reçus:
    0
    Bonjour,

    Oui, une petite source n'est pas de refus.

    Mais il faut quand même que je t'explique ce que je souhaite faire pour que tu comprenne. Au final ce n'est pas "bonjour" qui sera ajouté, mais un include PHP. En version simple, voici ce que ça donne :

    Code:
            $dom->loadHTMLFile($mon_fichier_html);
            ob_start();
            include($_SERVER['DOCUMENT_ROOT'] . JOB_DIR . '/includes/MyBody.php');
            $MyBody = ob_get_clean();
            ob_end_clean();
            $dom->getElementById('Mybody')->nodeValue = $MyBody;
    
    Cela fonction parfaitement (avec la création d'une class extends de DomDocument). Ce qui me permet de modifier dynamiquement un HTML sans y mettre de php à la main.

    Au sujet de mon dernier exemple, c'est plus compliqué, car c'est pour le head. En sachant que je veux supprimer la balise TITLE, LINK ainsi que toutes les balises META qui seront elles aussi incluses dynamiquement de la même façon que le code ci-dessus mais sans toucher au balise STYLE et aux exceptions de style tel que <!--[if lte IE 6]> ou même les @import url(css/structure_IE.css);.

    Cela me permet de détacher complétement le PHP de l'HTML, ce qui m'économise quelques heures de boulot et surtout, le HTML source reste tel quel (plus simple à modifier au cas où).

    Je te remercie encore pour ton aide.

    Orsam
     
Chargement...
Similar Threads - DomDocument secours Forum Date
Différence d'attribution de visites SEO ? au secours Google Analytics 23 Septembre 2015
Redirection, changement de serveur, pénalité. Au secours. Netlinking, backlinks, liens et redirections 8 Janvier 2015
Au secours ! Robots.txt Débuter en référencement 10 Novembre 2014
Débutante au secours !!! Débuter en référencement 6 Novembre 2014
WWW.FORMATION SECOURS 33 Demandes d'avis et de conseils sur vos sites 31 Août 2014
Google se met à indexer mes sites "alias" malgré des redirections 301 ! Au secours Crawl et indexation Google, sitemaps 20 Mai 2014
Google le futur au secours : intelligence artificielle, transhumanisme Référencement Google 9 Février 2014
Au secours : gros gain de position sur google Problèmes de référencement spécifiques à vos sites 6 Septembre 2013
Au secours : subite perte de position sur google Problèmes de référencement spécifiques à vos sites 4 Septembre 2013
Au secours, mon site régresse énormément Problèmes de référencement spécifiques à vos sites 26 Mars 2013
Au secours ! mon site a disparu de Google, que faire ? Problèmes de référencement spécifiques à vos sites 22 Mars 2013
Au secours ! Backlinks google envolés ? Référencement Google 8 Février 2013
Au secours mes backlinks montent vite sans référencement Netlinking, backlinks, liens et redirections 24 Juillet 2012
CFR/code APE pour "Nomad Digital", au secours ! Droit du web (juridique, fiscalité...) 2 Février 2012
Au-secours ! Se débarrasser d'un bloc de liens !! Développement d'un site Web ou d'une appli mobile 31 Août 2011
Au secours PUB Weborama Demandes d'avis et de conseils sur vos sites 4 Février 2011
langage ruby on rails ? au secours !!! Problèmes de référencement spécifiques à vos sites 19 Janvier 2011
ref naturel : au secours ! Débuter en référencement 15 Octobre 2010
Par ici les experts en joomla! venez à mon secours svp! Développement d'un site Web ou d'une appli mobile 20 Novembre 2009
Au secours mon site dégringole c'est la cata Problèmes de référencement spécifiques à vos sites 6 Juillet 2009