text filtern und ersetzen

virus

Grünschnabel
hi!
wieder mal ein kleines problem...(sonst wäre ich auch wohl kaum hier =))

und zwar habe ich eine variable $url, die auf meiner hp ausgegben werden soll (problem bestehet sowohl im newssystem, als auch im guestbook)(hiweis: verwende templates...- falls das hier wichtig sein sollte zu erwähnen.. ?!)

wenn ich nun "www.beispiel.de" $url zuweise, lautet der link auf meiner hp leider "http://www.meinehomepage.de/www.beispiel.de"

nur wenn ich zusätzlich 'http://' davor schreibe klappt das...

nun möchte ich aber nicht jedesmal 'http://' schreiben müssen, also habe ich 'http://' gleich mit in den php-code gesetzt:
PHP:
<a target=\"_blank\" href=\"http://$url\"><img border=\"0\" src=\"./img/www.gif\" alt=\"visit $url\"></a>&nbsp;&nbsp;";

nun könnte es ja sein, dass andere leute aus gewohnheit, oder wie auch immer, 'http://' mit hineinschreiben, was ja dann die folge hätte, das da dann zweimal 'http://' stehen würde....


Also ich möchte, dass $url auf 'http://' untersucht wird, wenn es bereits vorhanden ist soll es so gespeichert werden (mit anderen worten: es soll nichts geändert werden)
wenn es nicht vorhanden ist, soll es noch hinzugefügt werden


Big thx schonmal im vorraus und ich hoffe, ihr kommt mit meinem problem klar :rolleyes:
 
teil die variable $url mit der explode-funktion in mehrere teile auf, wobei du als trennzeichen den slash nimmst (/).
wenn das erste element im array nicht "http://" (oder irgendein anderes protokoll) ist, dann ergänzt du die url entsprechend.
 
-

Code:
if( ! preg_match("/http:\/\//", $url) )
{
    $url = "http://".$url;
}
echo $url;
Geht auch direkt mit nem komplexeren Ausdruck, aber darauf hab ich jetzt keine Lust. So läuft das auch.
 
du könntest auch auf den Doppelpunkt prüfen, da dieser nur bei angabe eines Protokolls vorhanden ist:

PHP:
if(!strpos(":", $url)) $url = "http://".$url;

wobei die variante von Caminus besser und sicherer ist.
 
-

Andererseits könntest du auch die Indexe durchgehen und überprüfen
PHP:
if( ! $url[0] == "h" and $url[1] == "t" and $url[2] == "t" and $url[3] == "p" )
{
    $url = "http://".$url;
}
:-)
 
funzt soweit, aber wie mache ich dass, wenn ich ubb benutze, also in einem ganzen text?

beispiel: "Mein Text http://www.beispiel.de bla bla bla bla..."

bei der widergabe erhalte ich dann auch wieder 'http://www.meinhomepage.de/www.beispiel.de'
 
bei port-angaben benutzt man auch den doppelpunkt...

ich hätte das _nur_ weglassen sollen.
normalerweise ist es jedoch bei kommentaren oder im gbook nicht nötig, soetwas zu unterstützen, denn wer gibt shcon seinen port an? oder hast du einen server auf einem port außer 80?

aber ich glaube, ich sollte wieder schlafen...
 
Zurück