Vincent Posté 11 Avril 2005 Partager Posté 11 Avril 2005 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 : <li><a href="028365.html">[Gennpdc] [62] DELABRE - MALLET </a><a name="28365"> </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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
slender Posté 11 Avril 2005 Partager Posté 11 Avril 2005 (modifié) 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. Modifié 11 Avril 2005 par slender Lien vers le commentaire Partager sur d’autres sites More sharing options...
slender Posté 11 Avril 2005 Partager Posté 11 Avril 2005 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 <?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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vincent Posté 12 Avril 2005 Auteur Partager Posté 12 Avril 2005 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 : // 1ere chaine$string = "<li><a href=\"028365.html\">[Gennpdc] [62] DELABRE - MALLET </a><a name=\"28365\"> </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; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 12 Avril 2005 Partager Posté 12 Avril 2005 Une autre version : <?$string = "<li><a href=\"028365.html\">[Gennpdc] [62] DELABRE - MALLET</a><a name=\"28365\"> </a><i>Jean-Philippe</i></li>";preg_match("<a href=\"(([a-z0-9]+)\.([a-z0-9]+))\">",$string,$array);$tmp = explode(" ",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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
slender Posté 12 Avril 2005 Partager Posté 12 Avril 2005 je savais bien qu'il y avait plus smart comme code. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vincent Posté 12 Avril 2005 Auteur Partager Posté 12 Avril 2005 preg_match("<a href=\"(([a-z0-9]+)\.([a-z0-9]+))\">",$string,$array);$tmp = explode(" ",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. <{POST_SNAPBACK}> 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 12 Avril 2005 Partager Posté 12 Avril 2005 Pour le plaisir $string = "<li><a href=\"028365.html\">[Gennpdc] [62] DELABRE - MALLET</a><a name=\"28365\"> </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.. Là c'est bon je m'arretes Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vincent Posté 12 Avril 2005 Auteur Partager Posté 12 Avril 2005 tout est possible sur webmaster-hub et après tu oses dire que tu ne te sens pas professionnel parce que tu sais pas faire la récursivité Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant