Finden Sie URL von String mit PHP

8

Der folgende Code wird verwendet, um URL aus einem String mit PHP zu finden. Hier ist der Code:

%Vor%

Nun, es zeigt einen Link, aber wenn ich einige Links zur Verfügung stelle, funktioniert es nicht und auch wenn ich ohne http: // schreibe, dann zeigt es keinen Link. Ich möchte, dass jeder Link zur Verfügung gestellt wird, sollte es aktiv sein, wie stackoverflow.com.

Irgendwelche Hilfe bitte ..

    
user1161867 05.02.2012, 18:14
quelle

3 Antworten

17

Eine Arbeitsmethode zum Verknüpfen mit http / https / ftp / ftps / scp / scps: $newStr = preg_replace('!(http|ftp|scp)(s)?:\/\/[a-zA-Z0-9.?&_/]+!', "<a href=\"\0\">\0</a>",$str);

Ich rate dringend, NICHT zu verlinken, wenn es nur einen Punkt hat, weil PHP 5.2, ASP.NET usw. berücksichtigt wird, was kaum akzeptabel ist.

Update: wenn Sie www. Strings auch, schauen Sie sich das an.

    
axiomer 05.02.2012, 18:20
quelle
3

Wenn Sie etwas wie stackoverflow.com erkennen wollen, müssen Sie nach allen möglichen TLDs suchen, um etwas wie Web 2.0 auszuschließen, was ziemlich lange Liste . Dies entspricht jedoch auch etwas wie ASP.NET etc.

Die Regex würde etwa so aussehen:

%Vor%

Dies passt nur zu Domains, die auf .com, .org und .net enden. Wie bereits erwähnt, müssten Sie diese Liste auf alle TLDs erweitern

    
bummzack 05.02.2012 18:35
quelle
0

@axiomer Ihr Beispiel funktionierte nicht, wenn der Link im Format ist:

https://stackoverflow.com?val1=bla&val2blablabla%20bla%20bla.bl

richtige Lösung:

%Vor%

erzeugt:

%Vor%     
Piotr Olaszewski 21.01.2015 08:27
quelle

Tags und Links