[PHP] Automatische URL probleem

Pagina: 1
Acties:

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Ik probeer al een tijdje dmv Regular expressions URL's automatisch tot echte links te maken....
Ik heb de volgende code:
code:
1
2
3
4
5
6
   $www_rx = "^[a-z0-9-]+(\.[a-z0-9-]+)*$";
   $http_rx = "^http://[a-z0-9-]+(\.[a-z0-9-]+)*$";
   $email_rx = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$";
   $processed = ereg_replace("$http_rx","<a href=\"\\0\">\\0</a>",$original);
   $processed = ereg_replace("$www_rx","<a href=\"http://\\0\">\\0</a>",$processed);
   $processed = ereg_replace("$email_rx","<a href=\"mailto:\\0\">\\0</a>",$processed);

En dit werkt ook wel maar alleen als de string uit een e-mail adres of alleen de URL bestaat zodra er tekst omheen verschijnt doettie niets meer.
Kan iemand vertellen waar ik de mist in ga?

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


Verwijderd

je moet in je regex ook even aangeven dat er misschien ook text voor of achter kan staan.

Verwijderd

Ofwel, laat die ^ aan het begin en die $ aan het eind weg.

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Ja, want die ^en $ betekenen begin en eind van die string. Dus als er iets anders voor of na staat, dan matcht hij niet meer :)

Hij gaat nu ook niet goed werken, want volgens mij mogen er nu geen eens /'s in de url staan. En dan heb je nog geen rekening gehouden met leuke query strings.

[edit]
Ik gebruik deze voor emails
code:
1
[^\:>]([_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*)

en deze voor urls:
code:
1
2
[^>\"](http://|ftp://)([a-zA-z0-9%/;\\+\\?&=\\._-]*)
[^/>\"](www[a-zA-z0-9%/;\\+\\?&=\\._-]*)