Récupérer une partie d'un texte entre 2 points ?? [Résolu]

Messages postés
19
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
13 janvier 2006
- - Dernière réponse : J_G
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
- 13 janv. 2006 à 03:29
Boujours à tous.

J'ai un petit problème pour récupérer dans un texte une partie du style :



7cca
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="imagetoolbar" content="no">
<link rel="top"
href="./index.php?sid=76b39d0ce1e67211da83835f0cd8cd60"
title="Crépuscule Le Jeu Index du Forum" />
<link rel="search"
href="./search.php?sid=76b39d0ce1e67211da83835f0cd8cd60"
title="Rechercher" />
<link rel="help"
href="./faq.php?sid=76b39d0ce1e67211da83835f0cd8cd60" title="FAQ" />
<link rel="author"
href="./memberlist.php?sid=76b39d0ce1e67211da83835f0cd8cd60"
title="Liste des Membres" />
<link rel="prev"
href="viewtopic.php?t=3055&amp;view=previous&amp;sid=76b39d0ce1e67211da83835f0cd8cd60"
title="Voir le sujet précédent" />
<link rel="next"
href="viewtopic.php?t=3055&amp;view=next&amp;sid=76b39d0ce1e67211da83835f0cd8cd60"
title="Voir le sujet suivant" />



J'utilise les sockets pour récupérer la source d'un topic et j'ai besoin de récupérer une partie d'un des messages.

Sur ce forum j'ai autorisé une balise appelé position, je l'utilise dans un des messages. Donc dans la source il y a :

&lt;position&gt; et &lt;/position&gt; elles sont mises
entre le début du message et la fin de celui-ci (le forum remplace les < et >
par &lt; et &gt;)

Donc mon but c'est de prendre ce qu'il y a entre &lt;position&gt; et &lt;/position&gt;



Mais comment faire? ^^
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
19
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
13 janvier 2006
3
Merci
J'ai remplacé strrpos par strpos et ca va nikel ;) merci à toi



Au final :



$limiteur = 'position';

$av = '&lt;';

$ap = '&gt;';



$debut = strpos($texte, $av.$limiteur.$ap);

$debut+= strlen($av.$limiteur.$ap);

$fin = strpos($texte, $av.'/'.$limiteur.$ap);



$res = substr($texte, $debut, $fin-$debut);

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Kayar
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
0
Merci
RegExp...

if(preg_match('@&lt;position&gt;(.*)&lt;/position&gt;@im', $texte, $res)) {
echo $res[1]; // devrait être ce que tu cherches... devrait !
}
Commenter la réponse de J_G
Messages postés
19
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
13 janvier 2006
0
Merci
non ca affiche rien j'ai essayé en virant les &lt; et les &gt; et ca donne toujours rien.
Commenter la réponse de cs_Kayar
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
0
Merci
Ah...

Es-tu sûr que les < sont reçus en &lt; ?

Sinon, tu peux "simplement" faire un truc du genre :
$texte = 'le texte';
$limiteur = 'position';

$debut = str_pos('&lt;'.$limiteur.'&gt;', $texte);
$debut+= strlen('&lt;'.$limiteur.'&gt;');
$fin = str_rpos('&lt;/'.$limiteur.'&gt;', $texte);

$res = substr($texte,$debut, $fin-$debut);
Commenter la réponse de J_G
Messages postés
19
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
13 janvier 2006
0
Merci
elle existe vraiment la fonction str_rpos ??
Commenter la réponse de cs_Kayar
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
0
Merci
Pardon... il se fait tard :(

strpos et strrpos bien sûr !

Ps : connais-tu ce magnifique site PHP: Hypertext Preprocessor
Commenter la réponse de J_G
Messages postés
19
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
13 janvier 2006
0
Merci
Je vais trouver quoi sur le site??



Sinon ton truc va pas mais il enlève quelques caractère donc je vais essayer de le bidouiller ^^
Commenter la réponse de cs_Kayar
Messages postés
19
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
13 janvier 2006
0
Merci
j'ai remarqué que tu as inversé le contenu des fonctions ^^

Avec ça tout le début est enlevé correctement mais la fin reste là ^^



$limiteur = 'position';

$av = '&lt;';

$ap = '&gt;';



$debut = strpos($texte, $av.$limiteur.$ap);

$debut+ = strlen($av.$limiteur.$ap);

$fin = strrpos($texte, $av.'/'.$limiteur.$ap);



$res = substr($texte,$debut, $fin-$debut);
Commenter la réponse de cs_Kayar
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
0
Merci
Heureux que tu t'en soit sorti...

Sur fr.php.net, tu trouveras la doc officielle, complète, exhaustive, didactique, bien foutue, et avec plein de trucs et astuces de PHP.

Grace à cette aide, plus besoin de se souvenir du nom des fonctions. Voilà pourquoi je t'ai dis str_pos (un vague souvenir).

Mets absolument ce site dans tes signets !!!!
Commenter la réponse de J_G