Rechercher : dans
Par :

Php + recuperer une chaine entre 2 balises

Dernière réponse le 11 fév 2008 à 15:12:32 Camuke, le 11 fév 2008 à 10:47:17 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « php + recuperer une chaine entre 2 balises » dans :
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Expressions régulières VoirQu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...
PHP - Les variables VoirConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...

1

croy, le 11 fév 2008 à 11:30:59

Bonjour,

Ta question n'est pas claire : pourrais-tu préciser stp ?

Répondre à croy

2

Camuke, le 11 fév 2008 à 11:38:04

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".

Répondre à Camuke

3

croy, le 11 fév 2008 à 11:52:12

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.

Répondre à croy

4

Camuke, le 11 fév 2008 à 13:19:54

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

Répondre à Camuke

5

croy, le 11 fév 2008 à 14:19:44
  • +1

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

Répondre à croy

6

Camuke, le 11 fév 2008 à 14:30:57
  • +2

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.

Répondre à Camuke

7

croy, le 11 fév 2008 à 14:33:44

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.

Répondre à croy

8

 Camuke, le 11 fév 2008 à 15:12:32

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....

Répondre à Camuke
Collection CommentÇaMarche.net