formuliere dein problem und eine frage dazu, sodass man darauf eingehen kann.
[Funktion] BBCode Problem mit http://
Einklappen
X
-
Ich habe zurzeit w+ stehen. Aber wenn dann [\w]{3,} steht, dann hat man ja wieder das problem, das du vorhin angeführt hast, sodass der Link seite.de?goto=http://google.de korrekt wäre und nicht umgewandelt wird. Wie kann ich das nun machen, dass auch das richtig erkannt wird?[color=red]Meine Seite:[/color]
American-Dad.de
Kommentar
-
Original geschrieben von penizillin
und vielleicht tust du endlich das, worum du gebeten wurdest und beantwortest die frage danach, was ein zirkumflex im bezug auf den gesamtausdruck für eine bedeutung hat.[color=red]Meine Seite:[/color]
American-Dad.de
Kommentar
-
Original geschrieben von penizillin
du hast ihn nicht verwendet. habe ich das behauptet?
kannst du nun endlich die frage beantworten?[color=red]Meine Seite:[/color]
American-Dad.de
Kommentar
-
Original geschrieben von penizillin
ich habe dir einen link gegeben. gib dir doch mühe, ihn dir anzuschauen!
Das Problem ist nur, dass das w+ dann trotzdem noch am Anfang steht, da bei ja www.example.com/?site=http://google.de dann www.example.com/?site=http auch am Anfang ist.
Jetzt lässt sich die Frage stellen, welche Zeichen für Protokolle möglich sind? A-Z und a-z ist einmal klar. Bei POP3 ist eine Zahl dabei, also sollen auch Zahlen möglich sein. Bei Z39.50 ist ein Punkt dabei, also nehmen wir auch einen Punkt mit. Wenn mich nicht alles täuscht, müssten das dann alle Zeichen sein. Ich habe leider keine Seite gefunden, wo man die genaue Difinitionsmenge für die möglichen Zeichen finden kann. Wisst ihr weiter?
Ansonsten könnte man das w einfach mit [a-zA-Z0-9\.] ersetzen.
PHP-Code:function protocol_replace($matches) {
if(preg_match('|^[a-zA-Z0-9\.]+://|', $matches[1])) {
return '<a href="'.$matches[1].'" '.$matches[2].'>'.$matches[3].'</a>';
} else {
return '<a href="http://'.$matches[1].'" '.$matches[2].'>'.$matches[3].'</a>';
}
}
Zuletzt geändert von Mra; 15.07.2007, 15:24.[color=red]Meine Seite:[/color]
American-Dad.de
Kommentar
-
brauchst du denn wirklich alle? http://en.wikipedia.org/wiki/Application_layer
warum nicht einfach eine auswahl aus http / https / ftp / nttp / webdav und noch einem-zwei weiteren protokolle am anfang des strings verlangen?
Das Problem ist nur, dass das w+ dann trotzdem noch am Anfang steht, ...
Kommentar
-
Original geschrieben von penizillin
aber nicht gefolgt von "://".Zuletzt geändert von Mra; 15.07.2007, 15:24.[color=red]Meine Seite:[/color]
American-Dad.de
Kommentar
-
Für w würde dann www.example.com/?site=http kommen, dass gefolgt von :// ist.
nein, \w+ würde am punkt scheitern.
was ist denn nun dein aktueller ausdruck?
Kommentar
-
function protocol_replace($matches) {
if(preg_match('|^[a-zA-Z0-9\.]+://|', $matches[1])) {
return '<a href="'.$matches[1].'" '.$matches[2].'>'.$matches[3].'</a>';
} else {
return '<a href="http://'.$matches[1].'" '.$matches[2].'>'.$matches[3].'</a>';
}
}[color=red]Meine Seite:[/color]
American-Dad.de
Kommentar
Kommentar