PDA

View Full Version : eregi_replace


Magi-X
21 avril 2003, 10h37
salut,

j'aimerais bien comment vous faites pour ajouter des liens dans un news.

On sais mettre le code html, mais c'est plus pratique comme ici avec [ URL = htt...]test[/ URL] .

mais je supose que par apres vous faites qq chose avec le eregi_replace! J'ai essayer mais ca foire toujours !!

Il y a pas qqun qui c me montrer le code ???

Kaspof
21 avril 2003, 12h16
Je veux bien t'aider si je peux, mais d'abord je te propose d'éditer ton message pour qu'il puisse être compréhensible. :p

Kaspof
21 avril 2003, 13h34
j'aimerais bien comment vous faites pour ajouter des liens dans un news.

C'est toujours pas français, mais bon :p

Mais bon, pour mettre un lien dans un message (ou une news), il suffit de clicker sur le gros bouton intitulé "http://" qui est présent lorsque tu clickes sur "repondre".
Si tu fais ça en réponse rapide, tu tapes l'adresse directement!

http://www.newdimension-fr.net

C'est ce que tu voulais savoir?

Matt
21 avril 2003, 14h51
$string = eregi_replace("\[url([[:alnum:]]+)://([^<[:space:]]*)([[:alnum:]#?/&=])\](.+?)\[\/url\]", "<a href=\"\\1://\\2\\3\">\\4</a>", $string);

Normalement ça devrait marcher, aux erreurs de syntaxe près ;-)

rog62
21 avril 2003, 14h52
Pas certain que cela va l'aider ;)

Kaspof
21 avril 2003, 15h21
Provient du message de Matt
$string = eregi_replace("\[url([[:alnum:]]+)://([^<[:space:]]*)([[:alnum:]#?/&=])\](.+?)\[\/url\]", "<a href=\"\\1://\\2\\3\">\\4</a>", $string);

Normalement ça devrait marcher, aux erreurs de syntaxe près ;-)

Evidemment, si c'est un truc technique... chsui plus à la hauteur :(

Matt
21 avril 2003, 15h53
Provient du message de rog62
Pas certain que cela va l'aider ;)

Bah à la rigueur, il a pas besoin de comprendre ;-)
Il suffit qu'il fasse un copier coller ...

Magi-X
21 avril 2003, 17h02
Cela ne marche pas vraiment le code chez moi !!!



quand je tappe donc test (http://www.newdimension-fr.net) et que je l'envoie dans ma base de donné:


il me donne un warning:

Warning: REG_BADRPT in Enregistrer.php on line 93

et j'ai fais copier coller du code !!!

Matt
21 avril 2003, 17h17
Effectivement, j'ai fait une ch'tite erreur ... Voilà ce qui arrive quand on teste pas ;-)
Voilà un code qui marche :
$string = eregi_replace("\[url=([[:alnum:]]+)://([^<[:space:]]*)([[:alnum:]#?/&=])\](.+)\[\/url\]", "<a href=\"\\1://\\2\\3\">\\4</a>", $string);

Magi-X
21 avril 2003, 17h26
merci matt, ca marche !!!

Je vais essayer d'etudier ton code pour ajouter encore ceci ds le tags html

target="blank" et class="a"

vais etudier pour le plaisir :rolleyes:

Matt
21 avril 2003, 18h17
Au cas où tu aurais des problèmes :
$string = eregi_replace("\[url=([[:alnum:]]+)://([^<[:space:]]*)([[:alnum:]#?/&=])\](.+)\[\/url\]", "<a href=\"\\1://\\2\\3\" target=\"_blank\" class=\"a\">\\4</a>", $string);

Magi-X
21 avril 2003, 18h58
c'est tres gentil ca de ta pars ;)

Magi-X
25 mai 2003, 17h00
salut matt, tu te rapelle que javais demandé comment faire pour remplacer les [URL= etc en code html ..... eh bien tu mavais donné ceci:

$news_main = eregi_replace("\[url=([[:alnum:]]+)://([^<[:space:]]*)([[:alnum:]#?/&=])\](.+)\[\/url\]", "<a href=\"\\1://\\2\\3\" target=\"_blank\">\\4</a>", $news_main);

et ceci fonctionne tant que je mettre pas 2fois un lien dans le news, car si c le cas le deuxiement foirera.

Tu es sur que le code est optimal?

Matt
25 mai 2003, 20h38
Euh ... Là je vois aucune explication logique ... Théoriquement, il devrait tout remplacer :-/

Magi-X
25 mai 2003, 21h27
bon ben on est pas sorti de lhoberge alors

ptete ke tu vois un truc ici dedans:

$news_main = nl2br($news_main);
$news_main = eregi_replace("\n", "", $news_main);

$news_main = eregi_replace("\[url=([[:alnum:]]+)://([^<[:space:]]*)([[:alnum:]#?/&=])\](.+)\[\/url\]", "<a href=\"\\1://\\2\\3\" target=\"_blank\">\\4</a>", $news_main);


il faut p-e dabord remplacer les lien avant de faire le reste ?

Matt
25 mai 2003, 21h43
Je pense pas que l'ordre des eregi_replace influe sur quelque chose (au passage, je ne vois pas l'intérêt du premier, puisque la fonction nl2br supprime tous les \n ...)
Pour le eregi_replace, essaye peut-être comme ça :
while (eregi("\[url=([[:alnum:]]+)://([^<[:space:]]*)([[:alnum:]#?/&=])\](.+)\[\/url\]", $news_main)) {
$news_main = eregi_replace("\[url=([[:alnum:]]+)://([^<[:space:]]*)([[:alnum:]#?/&=])\](.+)\[\/url\]", "<a href=\"\\1://\\2\\3\" target=\"_blank\">\\4</a>", $news_main);
}

Magi-X
25 mai 2003, 22h32
ben non regarde ce ke ca donne -->

en tappent (g enlever le [ pour kil ne le trensforme po)

URL=http://www.google]test[/URL]

URL=http://www.google]test[/URL]

URL=http://www.google]test[/URL]

il donne -->

test ca c un lien ki fonctionne

[URL=http://www.google]test c'est tout ce kil met et ce nest pas un lien

Matt
26 mai 2003, 13h10
Ca y'est .. j'ai compris le problème ...

Ceci devrait marche :
$news_main = eregi_replace("\[url=([[:alnum:]]+)://([^<[:space:]]*)([[:alnum:]#?/&=])\]([[:alnum:]#?/&= ]*)\[\/url\]", "<a href=\"\\1://\\2\\3\" target=\"_blank\">\\4</a>", $news_main);

Magi-X
26 mai 2003, 15h41
merciiii :D

tes quand meme gentil toi hein, hooh jte di jdevien amoureux la :p

Matt
26 mai 2003, 16h25
C'est pas de la gentillesse ... Plutôt de la pitié :p

Magi-X
17 juin 2003, 13h46
g un nvx bleme, parce ke maintentant je dois faire linverse!!!

et j'ai quasi trouvé moi meme, mais ca fonctionne plus des kil y a deux lien dans le texte!

le code:

$news['news_main'] = eregi_replace("<a href=\"([^\\[]*)\" target=_blank>([^\\[]*)</a> ", "[ url=\\1]\\2[/ url]",$news['news_main']);

Matt
17 juin 2003, 15h31
Essaye comme ça dans le sens BBCODE => HTML (le preg marche mieux que le ereg) :
$string = preg_replace('/\[url\=(http|ftp|https)\:\/\/([a-z0-9\/_\.\-]*)\](.*)\[\/url\]/iU', "<a href=\"\\1://\\2\" target=\"_blank\">\\3</a>", $string);
Et pour le sens HTML => BBCODE, utilise :
$string = preg_replace('<a href=\"([^\\[]*)\" target=_blank>([^\\[]*)</a> /iU', '[ url=\\1]\\2[/ url]', $string);
Par contre, je vois pas trop l'intérêt de la manip dans ce sens ... :confused:

Magi-X
17 juin 2003, 15h38
ben quand on modifie un message, faut bien que le code html pour les lien ce remette en BBCODE !

En tout ca jv une fois essayer ton code! merci

Magi-X
17 juin 2003, 15h44
le deuxieme fonctionne pas! le premier oui!

Magi-X
17 juin 2003, 15h49
il nafiche rien quand je fais mofidier !

Matt
17 juin 2003, 17h27
Provient du message de Magi-X
ben quand on modifie un message, faut bien que le code html pour les lien ce remette en BBCODE !

En tout ca jv une fois essayer ton code! merci

>> Ben dans ta base, tu stockes en BBCODE, et tu passes en HTML au moment de l'affichage ... comme ça pas de problème pour l'édition ...

Pour le deuxième, essaye comme ça :
$string = preg_replace('/\<a href=(http|ftp|https)\:\/\/([a-z0-9\/_\.\-]*)\>(.*)\<\/a\>/iU', '\[url=\"\\1://\\2\"\]\\3\[\/url\]', $string);

Magi-X
17 juin 2003, 17h36
Provient du message de Matt
>> Ben dans ta base, tu stockes en BBCODE, et tu passes en HTML au moment de l'affichage ... comme ça pas de problème pour l'édition ...



Mouhahaha je suis con, en plus c'est trop logique, pffff hahaha jsuis cooooooooon, marci mattou! Je vais faire comme ca!

looooooool jarrive po a le croire ! Moi ki me casse la tete a faire linverse! mouhaha !

:cry: jpeux tout modifier