Les Allergies
Alimentaires
Posez votre question Signaler

Php + recuperer une chaine entre 2 balises [Résolu]

Camuke 215Messages postés 7 mai 2007Date d'inscription 12 août 2011Dernière intervention - Dernière réponse le 19 juil. 2010 à 17:43
Bonjour,
Je cherche une fonction en PHP capable de renvoyé une chaine de caractere situé entre 2 balise dans une autre chaine.
Exemple:
Debutdetexte[MaBalise]TexteArecuperer/MaBalise2finDuTexte
La fonction me permettrai de recuper TexteArecuperer
Merci d'avance
Lire la suite 

Php + recuperer une chaine entre 2 balises »

9 réponses
Réponse
+10
moins plus
Comment le lien est-il repérable dans le texte qui est extrait de la base de données ? Il est précédé par ... ? Il est suivi par ... ?

A titre d'exemple, si $text contient "début du texte[début lien]http://192.168.1.2/Procedure/Doc/doc1.txt[fin lien]suite du texte"

Dans ce cas tu peux récupérer le lien par :

$marqueurDebutLien = "[début lien]";
$debutLien = strpos( $text, $marqueurDebutLien ) + strlen( $marqueurDebutLien );
$marqueurFinLien = "[fin lien]";
$finLien = strpos( $text, $marqueurFinLien );
$leLien = substr( $text, $debutLien, $finLien - $debutLien );

Je te laisse le soin de comprendre ce bout de script en :
- lisant la doc php pour les fonctions appelées
- intercalant des echo pour voir le résultat de chaque fonction
Ajouter un commentaire
Réponse
+5
moins plus
Parfait sa marche!!!

La version definitive sa donne:
$texte = 'Document de presentatoin: <a href="http://192.168.1.2/procedure/test/doc1.doc">Presentation</a>';
$marqueurDebutLien = '<a href="';
$debutLien = strpos( $texte, $marqueurDebutLien ) + strlen( $marqueurDebutLien );
$marqueurFinLien = '">';
$finLien = strpos( $texte, $marqueurFinLien );
$leLien = substr( $texte, $debutLien, $finLien - $debutLien );

Merci pour ton aide en tout cas.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Ta question n'est pas claire : pourrais-tu préciser stp ?
Ajouter un commentaire
Réponse
+0
moins plus
Voila dans un site intranet j'ai un bouton qui permet d'inserer des liens vers des documents sur le serveur donc mon code genere a un moment un lien qui s'affiche sur le site: sa donne

<a href="http://192.168.1.2/Procedure/Doc/doc1.txt">Texte</a>

La je doit creer un autre bouton permettant de supprimer le document donc faudrai que je recupere le lien vers le document, c'est a dire:
"http://192.168.1.2/Procedure/Doc/doc1.txt".
Ajouter un commentaire
Réponse
+0
moins plus
Merci,

Tu ne peux pas "récupérer" ce lien car le script php est exécuté sur le serveur pour générer le source HTML.

Il faut inverser ta stratégie en mettant dans ton script qqch comme :

$lien = "http://192.168.1.2/Procedure/Doc/doc1.txt";
echo "<a " . $lien . ">Texte</a>";

plus loin pour le lien de suppression

echo "<a href=...mettre ici url du script de suppression...?urlCible=" . $lien . ">pour supprimer</a>"

Dans le script de suppression tu recevras le paramètre urlCible qui te permettra de faire la suppression.

Bon courage.
Ajouter un commentaire
Réponse
+0
moins plus
j'y avais deja pencé mais je peux pas faire sa.

En fait si sa marche car je l'affiche pas directement. En fait c'est un site qui affiche des postes un peu comme dans un forum.
Lorsque quelqu'un cree un nouvelle article (Un poste pour un forum), l'article est contenu dans la base de données avec un id, un titre, le contenu, etc. Ces "Liens' que creer mon 1er bouton sont copie dans les articles donc pour le recupererer je fait une requete sql recuperant le contenu grace a l'id.

En code sa donne:

$Req = "select * from table where id=$id"
$ResultReq = $maconnection->query($MaReq);
$UneLigne = $ResultReq->fetch_object();
$Texte= $UneLigne->introtext;
echo $Texte;
Grace a l'echo j'affiche donc tout le contenu de l'article dont le lien.

Se que je voudrai c'est dans la variable $Texte recuperer mon Lien au milieu du contenu de l'article.

En recherchant un peu, j'ai trouvé la fonction preg_match mais je comprend pas tres bien comment elle fonctionne
Ajouter un commentaire
Réponse
+0
moins plus
Content que ca marche.

Une petite suggestion complémentaire : te protéger contre les erreurs. Par exemple si, pour une raison ou pour une autre, le <a manque.

On regrette toujours de n'avoir pas intégré le traitement des erreurs lorsque une erreur intervient.
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour le conseil.
De toute facon, je doit maintenant l'integrer au reste de mon code et tester les eventuelles problemes mais sa c'est une autre histoire....
Ajouter un commentaire
Réponse
+0
moins plus
Salut j'utilse cette commande pour recuperer les url :

$marqueurDebutLien = "[début lien]";     
$debutLien = strpos( $text, $marqueurDebutLien ) + strlen( $marqueurDebutLien );     
$marqueurFinLien = "[fin lien]";     
$finLien = strpos( $text, $marqueurFinLien );     
$leLien = substr( $text, $debutLien, $finLien - $debutLien ); 


ça marche bien pour une seule URL.


Mais j'ai un peu de mal pour la transformer, de façon a ce qu'elle le fasse pour plusieur lien dans le texte, pas seulement un.



J'ai bien tenté de faire un boucle for() afin de repeter cette commande mais le resultat est catastrophique :



for($z=0;$z < $nombrimage;$z++)     
     {    
       
$marqueurDebutLien = '[url]';     
${'debutLien'.$z} = strpos( $commentaire, $marqueurDebutLien , $fin );     
$marqueurFinLien = '/url';     
${'finLien'.$z}= strpos( $commentaire, $marqueurFinLien ,$fin );    
${'finLien'.$z} = ${'finLien'.$z}   ;    
${'leLien'.$z} = substr( $commentaire, ${'debutLien'.$z}, ${'finLien'.$z} - ${'debutLien'.$z} );     

$fin = ${'finLien'.$z} ;    
$tableau2[$z] = ${'leLien'.$z} ;     
$tableau2[$z] =  "<a href='$tableau2[$z]'>$tableau2[$z]</a>" ;    

$lesliens = $lesliens.$tableau2[$z];    
     } 


PS : il y a bien marqué "/url " avec crochet dans mon code, mais le forum le modifie, normal..

Il s'avere que cela recupere mes url, mais decale le debut et fin des urls
Auriez vous une idée d'ou est mon probleme ?

merci pour votre aide...
Ajouter un commentaire
Ce document intitulé « php + recuperer une chaine entre 2 balises » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?