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

Résolu
cs_Kayar Messages postés 19 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 13 janvier 2006 - 13 janv. 2006 à 01:14
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? ^^

9 réponses

cs_Kayar Messages postés 19 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 13 janvier 2006
13 janv. 2006 à 03:17
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);
3
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
13 janv. 2006 à 01:28
RegExp...

if(preg_match('@&lt;position&gt;(.*)&lt;/position&gt;@im', $texte, $res)) {
echo $res[1]; // devrait être ce que tu cherches... devrait !
}
0
cs_Kayar Messages postés 19 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 13 janvier 2006
13 janv. 2006 à 01:51
non ca affiche rien j'ai essayé en virant les &lt; et les &gt; et ca donne toujours rien.
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
13 janv. 2006 à 02:00
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);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Kayar Messages postés 19 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 13 janvier 2006
13 janv. 2006 à 02:34
elle existe vraiment la fonction str_rpos ??
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
13 janv. 2006 à 02:38
Pardon... il se fait tard :(

strpos et strrpos bien sûr !

Ps : connais-tu ce magnifique site PHP: Hypertext Preprocessor
0
cs_Kayar Messages postés 19 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 13 janvier 2006
13 janv. 2006 à 02:57
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 ^^
0
cs_Kayar Messages postés 19 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 13 janvier 2006
13 janv. 2006 à 03:14
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);
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
13 janv. 2006 à 03:29
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 !!!!
0