[PHP] str_replace(?) url

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil van een variabale $tekst (welke een variabele lap tekst bevat)
kijken of er een link voorkomt in de tekst en deze dan klikbaar maken, dus de <a href=''> ervoor plaatsen en </a> erachter..

Nu heb ik hierop zitten googlen maar ik kom alleen dit soort fratsen tegen maar dan met UBB code..
dus die zoekt op [url][/url], maar deze tags zijn en wil ik niet in mijn tekst opnemen.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Wat jij zoekt is het gebruik van reguliere expressies. Misschien dat je iets kan vinden op een zoekwoord als:

"regular expression url replace"

bijvoorbeeld

edit:

et voila:

code:
1
2
//URL: Replace URLs with HTML links
preg_replace('\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]', '<a href="\0">\0</a>', $text);


(je kunt het ook zelf schrijven natuurlijk, maar regexp zijn wel een vak apart)

[ Voor 47% gewijzigd door Bosmonster op 25-04-2008 13:26 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt, weet ik iig waar ik op kan zoeken, zoals hij hier boven staat werkt hij nog niet:

"Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in /home/dienstenportal/public_html/faq.php on line 99"

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

De meeste UBB parsers doen hetzelfde, dus daar kun je het ook wel uithalen. Enige verschil is dat je niet met url/url vervangt maar met een a-tag.

Magoed, je weet nu waar je op moet zoeken!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja maar dan kan je zoeken op [ url ] en [ /url ] in je tekst nu kan je alleen zoeken op http:// en weet je niet waar deze eindigd.


Ik gebruik nu deze:
$aantekeningen = ereg_replace("(^| |.)(http://([.]?[a-zA-Z0-9_/-])*)", "\\1<a href=\"http://\\2\">\\link</a>", $aantekeningen);

Alleen word mijn url nu afgekapt op een ? die in deze url staat.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit is hem geworden :

$aantekeningen = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">test</a>", $aantekeningen);

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Verwijderd schreef op vrijdag 25 april 2008 @ 13:54:
Ja maar dan kan je zoeken op [ url ] en [ /url ] in je tekst nu kan je alleen zoeken op http:// en weet je niet waar deze eindigd.
Nee, kijk maar hier op GoT bijvoorbeeld. URL's worden automatisch vervangen na het posten.

Een URL is redelijk eenvoudig te vinden. Begint met http:// (o.a.) en eindigt bij de eerst volgende spatie of break (of leesteken en dat maakt het al wat lastiger in een vrije omgeving als een forum). Niet helemaal waterproef, maar werkt wel in 99% van de gevallen.

Helemaal 100% is het helaas nooit te krijgen in vrije tekst.

[ Voor 13% gewijzigd door Bosmonster op 25-04-2008 15:30 ]

Pagina: 1