Aller au contenu

aide pour un Ereg qui supprime mes ids de sessions


Sujets conseillés

Posté

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 !

Posté

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 :)

Posté

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 ;)

Posté

Essaye :

Si tu cherche dans $chaine.

ereg("http[.]{1,} ", $chaine, $res);

le resultat sera mis dans $res[0]...

Posté

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

Posté

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

Posté

Je te dirais que le texte que tu donnes n'est pas vraiment une URL :lol:

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

Posté

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...

Posté
$url=ereg_replace("SID=[^& ]+&?","",$url);

$url=ereg_replace("(http://[^ ]+)\?","\\1",$url);

$url = ereg_replace("SID=[^& ]+", "", $url), tout simplement.

Le reste est inutile.

Posté

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)...

Posté

Salut,

J'avais oublié un espace après le ? ... cela devrait marcher maintenant :)

Dan

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...