2010-02-03 2 views
1

Salutations,Parse document entier html et remplacer les pièces spécifiques de celui-ci automatiquement PHP

Iv'e fait une recherche rapide dans les questions précédentes, mais n'a pas trouvé de réponse adéquate pour ma question.

J'ai créé une fonction qui trouve des mots dans une bibliothèque de tableaux et les remplace par des liens vers la description du mot.

Exemple:

$words = array("ANTIM","APDIV","APVEG","ARCHE","ARFEU","ARMUR", 
"ARSUP","ARTHE","ARTIL","ASSOM","ATTSU","BANQU","BARDE","BRICO", 
"CAMOU","CHANC","CHAOM"); 

Quand j'appelle ma fonction, REPLACE_TEXT (someString de $). Je recherche ces mots dans le texte. Bien que ces mots sont dans plusieurs pages de mon site Web et tous ont besoin d'un lien vers leur description respective. J'ai fait cette fonction afin d'automatiser le processus et ne pas écrire les liens manuellement.

Alors quand je l'appelle:

replace_text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultrices congue condimentum. Integer tempor aliquam ARFEU nisi at adipiscing. Vivamus ornare consequat metus. Nulla mollis lacus sit amet dolor rutrum sollicitudin. Maecenas sit amet nibh ut turpis bibendum rutrum et a tellus. Fusce a tortor a lacus feugiat gravida. Suspendisse elementum hendrerit urna ut viverra. Pellentesque ARCHE auctor, metus vitae lobortis vestibulum, justo ligula ultrices magna, vitae blandit mauris sapien eu velit. Nullam dapibus tristique orci, ac ullamcorper lectus venenatis ARTIL non. Nulla laoreet laoreet pretium.") 

Ce sera remplacé par:

"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultrices congue condimentum. Integer tempor aliquam <a href="somelink">ARFEU</a nisi at adipiscing. Vivamus ornare consequat metus. Nulla mollis lacus sit amet dolor rutrum sollicitudin. Maecenas sit amet nibh ut turpis bibendum rutrum et a tellus. Fusce a tortor a lacus feugiat gravida. Suspendisse elementum hendrerit urna ut viverra. Pellentesque <a href="somelink">ARCHE</a auctor, metus vitae lobortis vestibulum, justo ligula ultrices magna, vitae blandit mauris sapien eu velit. Nullam dapibus tristique orci, ac ullamcorper lectus venenatis <a href="somelink">ARTIL</a> non. Nulla laoreet laoreet pretium." 

(Les mots trouvés du tableau ont été remplacés par des points d'ancrage.)

Enfin, je veux ma fonction à appeler mais en cherchant dans toutes mes pages (code html) automatiquement lors du chargement. Je pense que cela peut être fait avec la partie domDocument de PHP, mais je ne suis pas habitué à cela, pouvez-vous me guider s'il vous plaît?

+0

Que voulez-vous dire automatiquement lorsqu'il est chargé? Vous voulez que la fonction s'exécute même si la page ne l'appelle pas? – Anthony

+0

Peut-être que je n'étais pas clair, voici ce que je veux archiver: 1-Remplacer le texte dans tout mon document html lorsque la page est chargée. Les difficultés que je rencontre en ce moment: 1-Comment récupérer tout le contenu de la page en cours 2-Comment analyser ce contenu grâce à ma fonction simple qui utilise str_replace() – wiooz

+0

Où mettriez-vous la fonction si vous voulez la page actuelle? Le contenu entier n'inclurait-il pas la fonction elle-même? Souhaitez-vous rediriger la demande de document vers un autre script qui analyse le document demandé et qui est ensuite généré? Nous aurions besoin de connaître votre serveur HTTP pour le conseiller. – Anthony

Répondre

3

On dirait que vous avez besoin de ob_start().

Vous pouvez créer votre fonction, permet de dire

function call_back_addLinks($buffer){ 
    //do your magic and replace 
    //words with links in $buffer 
    //then return the new String 
} 

Puis:

ob_start("call_back_addLinks"); 

Ensuite, votre code PHP normale pour générer du contenu normal. C'est-à-dire, votre page entière ici.

Puis:

ob_end_flush(); 

Le lien a un exemple simple.

+0

Je vais essayer cette méthode ... même si je pense que j'ai trouvé un moyen facile. Je peux utiliser ce qui suit: $ content = file_get_contents ('./my-content-page.html ', FILE_USE_INCLUDE_PATH); echo my_replace_text_function ($ content); Cela semble fonctionner correctement ... Mauvais test et vous informer! – wiooz