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

Signaler
Messages postés
19
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
13 janvier 2006
-
J_G
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
-
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

Messages postés
19
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
13 janvier 2006

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);
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
RegExp...

if(preg_match('@&lt;position&gt;(.*)&lt;/position&gt;@im', $texte, $res)) {
echo $res[1]; // devrait être ce que tu cherches... devrait !
}
Messages postés
19
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
13 janvier 2006

non ca affiche rien j'ai essayé en virant les &lt; et les &gt; et ca donne toujours rien.
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
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);
Messages postés
19
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
13 janvier 2006

elle existe vraiment la fonction str_rpos ??
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
Pardon... il se fait tard :(

strpos et strrpos bien sûr !

Ps : connais-tu ce magnifique site PHP: Hypertext Preprocessor
Messages postés
19
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
13 janvier 2006

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 ^^
Messages postés
19
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
13 janvier 2006

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);
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
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 !!!!