[php] van tekst naar link mbv ereg_replace

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • grote_oever
  • Registratie: Augustus 2002
  • Laatst online: 14:17
zelf ben ik bezig met een forum.

in het forum kunnen ze (net zoals een normaal forum duhh) tekst, plaatjes posten
nu wil ik dat als een persoon een link typt b.v http://www.weetikveel.nl dat er daarvan vanzelf een link wordt gemaakt...

die code heb ik eindelijk voor elkaar gekregen (met veel gepruts

code:
1
2
$inhoud = ereg_replace("[ftp|http]+://[^<>[:space:]]+[[:alnum:]/]+[^<>[:space:]]+[[:alnum:]/]",
                       "<a href=\"\\0\" TARGET=\"_blank\">\\0</a>", $inhoud);


deze code werkt schitterend..

zelf links als http://www.weetikveel.nl/test/test.html maakt hij keurig een link van..

maar wat is nu het probleem..

op mijn site kun je ook foto's zetten met de code
[foto]http://www.weetikveel.nl/foto.jpg[/foto]

wat gebeurt er nu, de code van mij werkt zo goed dat hij zelf die code omzet naar een link en dan werkt het plaatje niet meer...

wat ik ook doe aan de code, ik krijg het gewoon niet voor elkaar.. echt waar niet.. kan iemand mij helpen???

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Controleren op een spatie ervoor en erachter??? of je foto tags anders maken...

Acties:
  • 0 Henk 'm!

  • grote_oever
  • Registratie: Augustus 2002
  • Laatst online: 14:17
Gomez12 schreef op 15 april 2004 @ 21:20:
Controleren op een spatie ervoor en erachter??? of je foto tags anders maken...
nee.. zo bedoel ik het niet...

omdat in [foto]http://www.weetikveel.nl/foto.jpg[/foto] ook een link zit maak hij er het volgende van..

[foto]<a href="http://www.weetikveel.nl/foto.jpg">http://www.weetikveel.nl/foto.jpg</a>[/foto]

van..

en dat is niet goed...

Acties:
  • 0 Henk 'm!

  • grote_oever
  • Registratie: Augustus 2002
  • Laatst online: 14:17
dus wat ik nu precies bedoel is dit..

als er [foto] voor de link staat dan mag hij er geen link van maken...

ik kom zo ver..

code:
1
2
$inhoud = ereg_replace("[^<>\"[foto]\"]+[ftp|http]+://[^<>[:space:]]+[[:alnum:]/]+[^<>[:space:]]+[[:alnum:]/]",
                       "<a href=\"\\0\" TARGET=\"_blank\" class=\"maintekst2\">\\0</a>", $inhoud);


maar dit werkt dus niet... de fout zit bij [^<>\"[foto]\ "]+

als je dat weg haalt dan doet hij het wel.. maar dan zijn de foto's niet goed..

[ Voor 30% gewijzigd door grote_oever op 15-04-2004 21:42 ]


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Gomez12 schreef op 15 april 2004 @ 21:20:
Controleren op een spatie ervoor en erachter???
heb je dat gedeelte gelezen?
dat is namelijk jouw oplossing

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • grote_oever
  • Registratie: Augustus 2002
  • Laatst online: 14:17
Wolfboy schreef op 15 april 2004 @ 21:43:
[...]

heb je dat gedeelte gelezen?
dat is namelijk jouw oplossing
maar dit geld toch niet altijd...

als ik alleen een adres post dan doet hij het niet.. want dan zit er geen spatie voor.. toch?

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
als je een adres zonder spatie ervoor en erachter wil posten is het toch niet meer leesbaar dus hoeft het ook niet geparst te worden ( zijn uitzonderingen door andere tags te bedenken, maar dat zie ik als uitzonderingen)
Voorbeeld:
kijk ook eens ophttp://www.microsoft.com/voor de nieuwste updates.
Is niet echt leesbaar. Dus ik denk dat je er redelijk van uit kan gaan dat er een spatie voor en achter staat.

Acties:
  • 0 Henk 'm!

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 17:10

Knutselsmurf

LED's make things better

Een spatie of het begin van je string.....

- This line is intentionally left blank -


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Gebruik liever de PCRE syntax - is sneller en flexibeler. Zelf check ik op whitespace voor de link (eigenlijk niet geen whitespace ;) ) en een word-boundary na de link:
PHP:
1
    $content = preg_replace('/(?<!\S)((http(s?):\/\/)|(www\.))([\w.?&;#~=%\/-]+)\b/i', '<a href="http$3://$4$5" target="_blank">$4$5</a>', $content);

[ Voor 6% gewijzigd door crisp op 15-04-2004 22:04 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • grote_oever
  • Registratie: Augustus 2002
  • Laatst online: 14:17
crisp schreef op 15 april 2004 @ 22:03:
Gebruik liever de PCRE syntax - is sneller en flexibeler. Zelf check ik op whitespace voor de link (eigenlijk niet geen whitespace ;) ) en een word-boundary na de link:
PHP:
1
   code verwijder ivm verkloten van lay-out
yes.. deze code werkt... eindelijk :D..

kun je me nog vertellen hoe die precies in elkaar zit.. zodat ik hem zo kan ombouwen dat hij ook ftp pakt...

bedankt alvast...

andere ook bedankt

[ Voor 19% gewijzigd door grote_oever op 15-04-2004 22:08 . Reden: code verwijdert ivm verkloten van lay-out ]


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

lees deze 2 pagina's maar eens door
Pattern modifiers
Pattern syntax

daarmee kan je het wel ontcijferen ;)
als je dan nog vragen hebt dan horen we het we l weer

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

grote_oever schreef op 15 april 2004 @ 22:07:
[...]


yes.. deze code werkt... eindelijk :D..

kun je me nog vertellen hoe die precies in elkaar zit.. zodat ik hem zo kan ombouwen dat hij ook ftp pakt...

bedankt alvast...

andere ook bedankt
Je hoeft niet alles in 1 regexp te stoppen; je kan voor ftp ook een aparte maken ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • grote_oever
  • Registratie: Augustus 2002
  • Laatst online: 14:17
iedereen hartelijk bedankt..

ben er uitgekomen...
Pagina: 1