Bonjour
J'ai essayé de faire une regex pour faire une url cliquable à partir d'url écrites telles quelles dans un champ texte (comme dans les forums en fait)
$texte = $texte = preg_replace('#([^src=\"]|[^url\=])http://[a-z0-9._/-]+\.[a-z]+/([a-z0-9._/-])*(\?[a-z0-9._/-]+\=[a-z0-9._/-]+)#i', '<a href="$0">$0</a>', $texte);
En fait, je regarde s'il n'y as pas des balises devant pour éviter les problèmes. Ensuite, je commence par regarder le nom de domaine, puis le . puis l'extention. Ensuite je regarde s'il n'y a pas un nom de dossier. Enfin je regarde s'il n'y a pas un paramètre. jusque là ça va.
$texte = $texte = preg_replace('#([^src=\"]|[^url\=])http://[a-z0-9._/-]+\.[a-z]+/([a-z0-9._/-])*(\?[a-z0-9._/-]+\=[a-z0-9._/-]+\&?)*#i', '<a href="$0">$0</a>', $texte);
là j'ai rajouté une étoile à la fin et un \&? un peu avant. Mais PHP me remplace automatiquement le & par & et les liens du genre :
http://nom_de_domaine.ext?page=1&pag=2 deviennent :
http://nom de domaine.ext?page=1&pag=2
quelqu'un a une idée ?
Merci
(PS je sais on trouve des regex sur les liens cliquables un peu partout mais j'aimerais comprendre mon erreur).
Partager