Bonjour,
Je souhaite, à partir d'un contenu html que j'ai stocké dans une variable, transformer le contenu des balises liens.
Exemple:
Si j'ai
<a href="page.php?var=valeur&var2=valeur2" class="lien1">
Je voudrais obtenir :
<a href="?action=foo&link=<? echo urlencode("page.php?var=valeur&var2=valeur2" ); ?>" class="lien1">
de façon à ce que le navigateur ne se mélange pas les pinceaux...
A priori la solution est dans les regex avec notament la fonction preg_replace()
J'ai donc essayé ça :
$contents = preg_replace_callback('`href="([^>].*)" `', 'encodeUrl', $contents);
avec encodeUrl :
function encodeUrl($masque)
{
if(eregi("javascript",$masque[1])) return $masque[0];
return 'href="?action=forum&link='.urlencode($masque[1]).'"';
}
Mais le problème est le suivant: preg_replace ne s'arrette pas au premier " trouvé mais au troisième, c'est à dire qu'il prend le class="lien1" au passage.
Si quelqu'un a une idée...
Toujours au niveau des regex, j'ai quelques questions,
- Pourquoi devoir mettre ` au debut et la fin du masque ? (ça marche pas sinon)
- Est ce la meme syntaxe pour les fonctions preg (issues de perl apparemment) que pour les fonction ereg et cie ?
- Ou peut on trouver de la bonne doc sur la question ?
Merci d'avance