Version complète: sur le forum Webmaster Hub : decomposer du texte
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Vincent
Bonjour,

J'ai comme l'impression que je cherche compliqué pour un truc simple mais je suppose que je dois pas utiliser les bonnes fonctions.

je cherche a trouver dans du texte presenté comme ceci :
CODE
<li><a href="028365.html">[Gennpdc] [62] DELABRE - MALLET
</a><a name="28365">&nbsp;</a>
<i>Jean-Philippe
</i></li>

le lien : 028365.html
le titre : [62] DELABRE - MALLET
le prénom : Jean-Philippe

qui a une idée simple pour faire ca en 3 lignes au lieu de 30 wacko.gif ?
slender
salut,
la fonction http://www.expreg.com/pregsplit.php en te servant des regex (expressions régulières) me semble être un bon choix pour ce genre de manipulation de chaines. Il faut cependant que la structure de la chaine soit toujours identique aux niveau des tags qui vont constituer les masques.
slender
essaie ca,
ton seul job est d'enlever les guillemets dans la premier chaine de code html au départ, ensuite tu appliques ces quelques lignes
CODE
<?php
// 1ere chaine
$string = "<li><a href=028365.html>[Gennpdc] [62] DELABRE - MALLET";
$mot = split("<li><a href=",$string);
$mot = split(">[[]Gennpdc[]]",$mot[1]);
$lien = $mot[0];
$titre = $mot[1];
// 2eme chaine
$string = "<i>Jean-Philippe";
$mot = split("<i>",$string);
$prenom = $mot[1];
// results:
echo $lien."<br />".$titre."<br />".$prenom;
?>

j'espere que ca ira car ca fait le job mais je pense que des spécialistes en regex feraient ca en une ligne.
Vincent
pas mal comme demarche, elle est plus propre que la mieux qui recherchais des position qui decoupé la chaine de telle à telle position etc... avec strpos etc..

voici ma version définitive du midi :
CODE
// 1ere chaine
$string = "<li><a href=\"028365.html\">[Gennpdc] [62] DELABRE - MALLET
</a><a name=\"28365\">&nbsp;</a>
<i>Jean-Philippe
</i></li>";

$message =  split("\n",ereg_replace("\"","",$string));
$mot = split("<li><a href=",$message[0]);
$mot = split(">[[]Gennpdc[]]",$mot[1]);
$lien = $mot[0];
$titre = $mot[1];
// 2eme chaine
$mot = split("<i>",$message[2]);
$prenom = $mot[1];
// results:
echo $lien."<br />".$titre."<br />".$prenom;
Anonymus
Une autre version :
CODE
<?

$string = "<li><a href=\"028365.html\">[Gennpdc] [62] DELABRE - MALLET
</a><a name=\"28365\">&nbsp;</a>
<i>Jean-Philippe
</i></li>";

preg_match("<a href=\"(([a-z0-9]+)\.([a-z0-9]+))\">",$string,$array);
$tmp = explode("&nbsp;",strip_tags($string));
$nom = substr($tmp[0],10);
$prenom = $tmp[1];

echo "<bR>-->".$array[1];
echo "<bR>-->".$nom;
echo "<bR>-->".$prenom;

?>

Voilà. Plusieurs solutions, mais tout dépend des éléments 'stables' de ta chaine.

Anonymus.
slender
je savais bien qu'il y avait plus smart comme code.
wink.gif
Vincent
CITATION(Anonymus @ mardi 12 avril 2005, 14h31)
CODE
preg_match("<a href=\"(([a-z0-9]+)\.([a-z0-9]+))\">",$string,$array);
$tmp = explode("&nbsp;",strip_tags($string));
$nom = substr($tmp[0],10);
$prenom = $tmp[1];

Voilà. Plusieurs solutions, mais tout dépend des éléments 'stables' de ta chaine.

Anonymus.
*


pas mal Anonymus ! 4 lignes, je me disais bien que j'avais fait trop compliqué.
Pour la stabilité des elements... disons que mes archives sont généré automatiquement sous cette forme depuis Octobre 2002 ... donc 2 ans et demi, je considère cela comme stable, cela dit, je suis bien conscient que cela peut changer a tout moment suite a une montée de version du soft.
Bon allez, je m'en vais finir la construction de mon fil RSS.
Anonymus
Pour le plaisir wink.gif

CODE
$string = "<li><a href=\"028365.html\">[Gennpdc] [62] DELABRE - MALLET
</a><a name=\"28365\">&nbsp;</a>
<i>Jean-Philippe
</i></li>";

preg_match("/(<a href=\"([a-z0-9]+\.[a-z0-9]+)\">)(\[Gennpdc]) ([^<\/]*)(.*)/",str_replace("\n"," ",$string),$array);

echo"<br>".$array['2'];
echo"<br>".$array['4'];
echo"<br>".substr(strip_tags($array['5']),6);

Mais bon.. Les expressions regulières, c'est pas mon truc.. sad.gif

Là c'est bon je m'arretes biggrin.gif
Vincent
d_clap_20.gif d_clap_20.gif d_clap_20.gif
tout est possible sur webmaster-hub wink.gif
et après tu oses dire que tu ne te sens pas professionnel parce que tu sais pas faire la récursivité wink.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.