Remplacer du Texte

  • Auteur de la discussion herve57
  • Date de début

herve57

Nouveau membre
Bonjour,

J'ai , je pense cette fonction
[cpp]function html_encode($text)
{
$searcharray = array(
"'([-_\w\d.]+@[-_\w\d.]+)'",
"'((?:(?!://).{3}|^.{0,2}))(www\.[-\d\w\.\/]+)'",
"'(http?:\/\/[-_~\w\d\.\/]+)'");

$replacearray = array(
"<a href=\"mailto:\\1\">\\1</a>",
"\\1http://\\2",
"<a href=\"\\1\" target=_blank>\\1</a>");

return preg_replace($searcharray, $replacearray, stripslashes($text));
}[/cpp]

Fonction qui code les adresses Mails en y ajoutant un espace.

Je souhaiterais la modifier pour que n'apparaisse plus du tout l'adresse mail mais "Mail Non Dispo" .

N'y connaissant rien ....
 

zeb

Modérateur
Pour s'y connaître un peu plus, cherche de la doc sur les regex (expressions régulières).
 

marsien

Grand Maître


Sauf erreur de ma part, tu remplace
[cpp]<a href=\"mailto:\\1\">\\1</a>[/cpp]

par
[cpp]<a href=\"mailto:\\1\">Mail non dispo</a>[/cpp]
dans ce cas, en cliquant sur mail non dispo, tu auras quand même le lien vers ton mail

ou par
[cpp]<a href=\"\">Mail non dispo</a>[/cpp]
si tu ne veux plus de mail du tout (bien que je n'en vois pas l'intérêt

ou par
[cpp]<a href=\"\">\\1</a>[/cpp]
si tu veux un mail visible mais dont le lien ne renvoie sur rien.
 

zeb

Modérateur
Les regex en bref :

() définissent un morceau
[] définissent un ensemble de caractères
\ balise un caratère particulier
? entre 0 et 1 fois
+ entre 1 et plusieurs fois
* entre 0 et plusieurs fois

Tu utilises deux tableaux de 3 lignes chacun.
D'un côté quoi transformer, de l'autre comment.

(J'ai réécris tes 1ers regex sans les quotes ni les backslashes doublés)

Code:
([-_\w\d.]+@[-_\w\d.]+)

En un seul premier morceau -- ()
considérer un caractère parmi le tiret, le soulignement, les lettres, les chiffres ou le point -- -_\w\d
considérer ce caractère 1 ou plusieurs fois -- +
Avec au milieu un @
Puis encore le même ensemble d'au moins un caractère parmi le tiret, le soulignement, les lettres, les chiffres ou le point.

Code:
<a href="mailto:\1">\1</a>

Prendre le morceau N°1 et écrire une balise <a> avec.

Au lieu de ça, que veux-tu ? Surtout pas d'ancre mailto ! Au boulot :

Code:
$replacearray = array(
    "<b>Mail Non Dispo!</b>",
    "\\1http://\\2",
    "<a href=\"\\1\" target=_blank>\\1</a>");
 

zeb

Modérateur
Grillé par Marsien de 50 minutes et je ne l'ai pas vu !

herve, je te prie quand même de comprendre au moins la solution, à la lumière de mon humble contribution, de celle de marsien ou des résultats de google.

enjoy!
 

herve57

Nouveau membre
Justement , Zeb; le pire c'est que je pense MEME avoir compris ! Merci ! c'est Byzance !
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 132
Messages
6 718 001
Membres
1 586 388
Dernier membre
mery2005
Partager cette page
Haut