Nettoyer une adresse url

Répondre
fausto
le 01/06/2011 à 18:59
fausto
Bonjour,

je souhaiterais transformer une adresse du type :
<a href="http://www.blabla.com">lien</a>

en : http://www.blabla.com

Le problème vient du fait que mes liens html peuvent etre multiples, et insérés
dans un texte plus ou moins long

En clair, la fonction "strip_tags" ne convient pas, je ne peux pas me permettre de scanner tout le texte

Il me faudrait comme l'inverse de l'expression régulière suivante (qui transforme une adresse mail, ou un lien vers un site, en lien cliquable) :

$in = array(
'`((?:https?|ftp)://\\S+)(\\s|\\z)`',
'`([[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*\.([a-z]{2,4}))`'
);

$out = array(
'<a href="$1" target="_blank">$1</a>$2',
'<a href="mailto:$1">$1</a>'
);

$text = preg_replace($in, $out, $_POST['texte']);


Merci d'avance

Fausto
LupusMic
le 01/06/2011 à 23:46
LupusMic
Quelle que soit la solution que tu retiendras, tu finira pas scanner le fichier à traiter. Mais peut-être qu'il y a un morceau qui n'est pas passé quand tu as publié ton message ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
fausto
le 03/06/2011 à 13:48
fausto
Bonjour,
non, tout le message est bien passé
donc, pas de moyen plus rapide que de tout scanner avec strip_tags ??
LupusMic
le 03/06/2011 à 15:02
LupusMic
Est-ce que c'est lent ? Et si oui, as-tu fait des benchmarks pour le prouver ? Optimiser sans point de repère, c'est une perte de temps pour souvent arriver à un résultat inférieur à ce qu'on avait au départ.

Je vois difficilement comment on peut faire plus rapide que strip_tags (sauf si tu as un gros document, mais dans ce cas, c'est une bonne raison d'optimiser).
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
fausto
le 03/06/2011 à 15:17
fausto
Disons que je récupère le champ d'une table pour commencer, et ensuite je réécris un fichier .js existant, avec les nouvelles données,
donc cela prend un peu de temps

je vais voir cette histoire de point de repères

merci

F
LupusMic
le 03/06/2011 à 16:11
LupusMic
Très franchement, dans l'opération, ça m'étonnerait que ce soit strip_tags qui prenne le plus de temps. Les IO utilisés lors de l'écriture du fichier ou l'accès ç la base doivent avoir un impact bien plus important que strip_tags.
Mais pourquoi tu réécris le fichier ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
fausto
le 03/06/2011 à 16:18
fausto
en fait le .js est un éditeur bbcode
en clair, je récupère la valeur de l'ancien texte (dans la base), je supprime les balises html que je remplace par des balises bbcode (c'est là d'ailleurs que je dois supprimer les balises <a href)
Je recompose le javascript et je remplace le contenu de l'ancien par le nouveau

assez complexe et dense comme manip !

F
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours