PFZ.nl - PHP Community: URL-detectie afkappen - PHP - Forum - PFZ.nl - PHP Community

Je kunt niet antwoorden op dit topic
#1 05-02-2012 13:38
  • frank f
  • Groep: Forumleden
  • Posts: 28
  • Actief sinds: 30-05-2010
Ik gebruik deze code om in een reactieformulier een URL te detecteren en aanklikbaar te maken:

1
2
3
4
5
6
7
8
$m = preg_match_all('/http:\/\/[a-z0-9A-Z,-.]+(?(?=[\/])(.*))/', $reactietxtstrip, $match);

if ($m) {
    $links=$match[0];
    for ($j=0;$j<$m;$j++) {
        $reactietxtstrip=str_replace($links[$j],'<a href="'.$links[$j].'" target="_blank">'. inkorten($links[$j], 40) .'</a>',$reactietxtstrip);
    }
}


Maar als ik typ:

"http://www.pfz.nl/ Deze site is gaaf"

Dan maakt hij de link <a href="http://www.pfz.nl/ Deze site is gaaf">

Hoe zorg ik dat hij de URL afkapt na de spatie?

#2 05-02-2012 15:51
  • Ivo P.
  • Groep: Verenigingsleden
  • Posts: 2802
  • Actief sinds: 17-01-2002
jouw (.*) zou moeten zijn

([^ ]*)

dus []: uit de tekens
^: deze tekens niet
: een spatie

* : 0 of meer keer
Ivo Peters
Developer en systeembeheerder @ PeHa ICT Services. blog.peha-ict.nl

#3 05-02-2012 15:52
  • Ivo P.
  • Groep: Verenigingsleden
  • Posts: 2802
  • Actief sinds: 17-01-2002
ik zou trouwens naast http:// ook https:// toestaan:


http:
wordt dan
https?:

?-teken maakt het voorgaande teken optioneel.
Daarnaast zijn er ook nog urls die beginnen met ftp:// of mailto: of telnet: en nog een berg protocollen
Ivo Peters
Developer en systeembeheerder @ PeHa ICT Services. blog.peha-ict.nl

#4 11-02-2012 08:05
  • frank f
  • Groep: Forumleden
  • Posts: 28
  • Actief sinds: 30-05-2010
Dank, makkelijke oplossing en werkt allebei.

#5 11-02-2012 09:22
  • frank f
  • Groep: Forumleden
  • Posts: 28
  • Actief sinds: 30-05-2010
Als ik nu tekst achter een URL zet dan neemt hij de <br /> mee in de link...

Waar gaat het fout?

1
2
3
4
5
6
7
8
9
10
11
12
13
$reactietxt = htmlspecialchars($reactie['txt']);
$reactietxtstrip = preg_replace('/(\r\n|\n|\r){2,}/', "\n", $reactietxt);

$m = preg_match_all('/https?:\/\/[a-z0-9A-Z,-.]+(?(?=[\/])([^ ]*))/', $reactietxtbr, $match);

if ($m) {
    $links=$match[0];
    for ($j=0;$j<$m;$j++) {
        $reactietxtbr=str_replace($links[$j],'<a href="'.$links[$j].'" target="_blank">'. inkorten($links[$j], 35) .'</a>',$reactietxtbr);
    }
}

$reactietxtbr = nl2br($reactietxtstrip);


Inloggen wachtwoord vergeten? Aanmelden