Toucouleur Posté 21 Septembre 2005 Posté 21 Septembre 2005 je pleure à chaque fois qu'il faut que je m'y mette mais c'est pas faute d'essayer. J'ai du texte avec des liens dedans genre : Il a fallu une dizaine de jours aprés la découverte d'une faille critique pouvant affecter le navigateur pour que la fondation Mozilla finalise cette version insensible à cette nouvelle vulnérabilité. http://www.monlien.com/index.php?t=12&SID=12345&toto=2 Il a fallu une dizaine de jours aprés la découverte d'une faille critique pouvant affecter le navigateur pour que la fondation Mozilla finalise cette version insensible à cette nouvelle vulnérabilité. http://www.deuxliens.com/index.php?SID=abcdefgh12355 Il a fallu une dizaine de jours aprés la découverte d'une faille critique pouvant affecter le navigateur pour que la fondation Mozilla finalise cette version insensible à cette nouvelle vulnérabilité. notez que les deux liens http://www.monlien.com/index.php?t=12&SID=12345&toto=2 et http://www.deuxliens.com/index.php?SID=abcdefgh12355 ne sont pas construits pareils du coup pas moyen de tenter le bon vieux strlen puis strpos et j'en passe. Comment donc faire avec notre merveilleux Ereg ? Merci beaucoup par avance !
NorSeb Posté 23 Septembre 2005 Posté 23 Septembre 2005 Salut, L'idée sans doute est de prendre la zone qui se trouve entre http et l'espace qui suit. A farfouiller... Je vais voir ce que je peux trouver
Toucouleur Posté 23 Septembre 2005 Auteur Posté 23 Septembre 2005 je travaille dessus, masi définitivement ces eregs me rendent fous... et comme j'oubli la moitié des syntaxes à chaque fois que je dois remettre le nez dedans... c'est sympa Seb d'avoir répondu
NorSeb Posté 23 Septembre 2005 Posté 23 Septembre 2005 Essaye : Si tu cherche dans $chaine. ereg("http[.]{1,} ", $chaine, $res); le resultat sera mis dans $res[0]...
Dan Posté 23 Septembre 2005 Posté 23 Septembre 2005 Salut Toucouleur, Essaies avec ces deux lignes, en séquence: $url=ereg_replace("SID=[^&]+&?","",$url);$url=ereg_replace("[?&]$","",$url); La seconde ligne permet de virer un éventuel ? ou & en fin d'URL. Cela devrait te convenir. Dan
Toucouleur Posté 24 Septembre 2005 Auteur Posté 24 Septembre 2005 Mention spéciale pour Dan, merci ! Un détail néanmoins avec cette méthode si je fais ceci : <?php$url = "I've written about Siege here before, incredible photographer? Sure. Dealing with loss and intense emotional drain after hurricane Katrina? Yeah that too.Clayton bought his Mom a trailer, a week later it was destroyed in Katrina. He didn't know where she was for an age, with vague possibles of she's in a shelter. He's found her now, and she's pretty much ok, although her dignity is temporarily damaged.He's now out there, photographing and talking to [url="http://www.test.com/page=45.html?SID=342424255"]http://www.test.com/page=45.html?SID=342424255[/url] people he grew up with, images and elements of his past changed and broken into barely recognisable shadows.I can't really begin to understand what he's going through right now, but seeing the loss and devastation visited on...these people (that) had so little, and yet lost so much. And it won't be long before they're totally forgotten and ignored again, like they've always been.";$url=ereg_replace("SID=[^&]+&?","",$url);$url=ereg_replace("[?&]$","",$url);echo $url;?> ça marche plus trop car il va couper après le SID. Si par contre mon url est http://www.test.com/page=45.html?SID=342424255&toto=tata tout fonctionne bien
Dan Posté 24 Septembre 2005 Posté 24 Septembre 2005 Je te dirais que le texte que tu donnes n'est pas vraiment une URL Je n'avais pas percuté que tu cherchais à les extraire du texte... Tu cherches à faire quoi ? extraire les URLs seulement, en supprimant les SID? Ou alors ne supprimer que les SID et laisser le texte avec les URLs ? Dans ce cas, il suffit de remplacer les deux lignes par: $url=ereg_replace("SID=[^& ]+&?","",$url);$url=ereg_replace("(http://[^ ]+)\? ","\\1 ",$url); La deuxième ligne permet de supprimer un éventuel '?' qui traîne en fin d'URL. Dan
Toucouleur Posté 25 Septembre 2005 Auteur Posté 25 Septembre 2005 l'objectif de ce truc c'est de trouver le moyen de supprimer les sessions Id que les gens recopient et balancent dans le forum http://www.kitesurf.fr/ car ces SID polluent le référencement des pages qui pourraient interesser GG. <?php$url = "I've written about Siege here before, incredible photographer? Sure. Dealing with loss and intense emotional drain after hurricane Katrina? Yeah that too.Clayton bought his Mom a trailer, a week later it was destroyed in Katrina. He didn't know where she was for an age, with vague possibles of she's in a shelter. He's found her now, and she's pretty much ok, although her dignity is temporarily damaged.He's now out there, photographing and talking to http://www.test.com/page=45.html?SID=342424255&toto=12 people he grew up with, images and elements of his past changed and broken into barely recognisable shadows.I can't really begin to understand what he's going through right now, but seeing the loss and devastation visited on...these people (that) had so little, and yet lost so much. And it won't be long before they're totally forgotten and ignored again, like they've always been.";$url=ereg_replace("SID=[^& ]+&?","",$url);$url=ereg_replace("(http://[^ ]+)\?","\\1",$url);echo $url;?> si je fais ceci, cela fonctionne sauf que l'url va donc devenir : http://www.test.com/page=45.htmltoto=12 et ce coup çi il me manque le "?" avant toto. quand j'ai posté ce topic j'essayai de faire un ereg qui aurait vocation à me virer sid=[chaine alpha numérique uniquement] avec la commande [[:alnum:]] mais je n'y étais pas parvenu...
loufoque Posté 25 Septembre 2005 Posté 25 Septembre 2005 $url=ereg_replace("SID=[^& ]+&?","",$url);$url=ereg_replace("(http://[^ ]+)\?","\\1",$url); $url = ereg_replace("SID=[^& ]+", "", $url), tout simplement. Le reste est inutile.
TheRec Posté 25 Septembre 2005 Posté 25 Septembre 2005 Bonjour, je suis pas très expression rationnelle Mais c'est un choix personnel, c'est plus puissant et dans certains cas plus performant d'après le manuel PHP... $url=preg_replace(array("/\?SID=[^&]+&/i", "/&SID=[^&]+&/i", "/\?SID=[^&^\s]+/i", "/&SID=[^&^\s]+/i"), array("?", "&", "", ""), $url);echo $url; Si tu veux vraiment, on peut remplacer avec des ereg_replace, mais il faut les écrire à nouveau (expressions rationnelles != expressions régulières)...
Dan Posté 25 Septembre 2005 Posté 25 Septembre 2005 Salut, J'avais oublié un espace après le ? ... cela devrait marcher maintenant Dan
Toucouleur Posté 25 Septembre 2005 Auteur Posté 25 Septembre 2005 merci beaucoup à tous pour votre aide, je comprend mieux aussi les EREGs merci encore à tous
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant