Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/01/2007, 12h41   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2005
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 25
Points : 11
Points : 11
Par défaut Exclusion de chaines

Bonjour,

J'ai besoin de remplacer tous les liens d'une page, par des éléments paramétrés.
Je ne doit prendre en compte que les liens du site (pas de "mailto", pas de liens externes et pas les ancres)

Actuellement, j'en suis là :
$sPage = eregi_replace("href=\"([^(http)(mailto)(#)])", "href=\"index.php?Action=".cstActGoPage."&Page=".$sSousRep."\\1", $sPage);

$sPage=> contient le code HTML de la page source.

Visiblement, le pattern "href=\"([^(http)(mailto)(#)])" exclus touts les caractères (et non pas les chaines) contenu dans les chaines que je souhaite supprimer.

Pour résumer, je souhaite que mon remplacement s'applique sur les chaines :
href="...

Et exclu les chaines :
href=\"#...
href=\"http...
href=\"mailto...
ben-34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 03h32   #2
Membre habitué
 
Avatar de daniel61
 
Inscription : décembre 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 109
Points : 120
Points : 120
POSIX ne permet pas les assertions, par contre PCRE oui. les fonctions preg_* ne sont pas tellement plus compliquées, mais beaucoup plus puissantes.

Code :
1
2
 
$sPage=preg_replace("/\shref=\"(?!http|mailto|#)([^\"]+)\"/isU", "href=\"index.php?Action=".$cstActGoPage."&Page=".$sSousRep."\\1", $sPage);
(?!http|mailto|#) veut dire pas de http ou mailto ou #
([^\"]+) veut dire 1 ou plusieurs caractères qui ne sont pas "
daniel61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h12.


 
 
 
 
Partenaires

Hébergement Web