RegEx .. Alle Links ausser eigene Domain..
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
anregung
ausdruck
bleiben
domain
eigene domain
einsetzen
ersetzen
ersten schritt
forum
fremde domain
held
http
nehmen
problem
realisieren
schritt
string
teil
text
verweis
-
Ja ich weiß RegEx ist keine Programmiersprache.. Aber hier passts noch am besten hin^^
Es geht um mein Forum^^ Ich will, dass Gäste keine Externen Links sehen können.. Funktioniert auch soweit. Nur ich will noch, dass links, die auf meine eigene Domain verweisen ausgelassen werden..
Also momentan erkenne ich Links mit folgender RegEx:
<a href=*>*</a>
Nicht sehr kompliziert, aber es tuts..^^
So .. Nehmen wir mal an die Domain wäre meinedomain.de .. Wie könnte ich per RegEx verwirklichen, dass diese Domain ausgelassen wird? Ich kenn mich mit RegEx nicht so aus^^
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich hoffe, ich habe es richtig verstanden: Du suchst einen Regulären Ausdruck, der Dir die Verlinkung weg-ersetzt - es sei denn, der Link verweist auf Deine Domain.
So direkt wüßte ich das nicht zu realisieren. Ich würde es so zu programmieren versuchen:
Im ersten "Schritt" drei Teile aus dem Text "herausschneiden": 1) den ganzen Link (für den Fall, daß er zulässig ist, sodaß Du ihn wieder einsetzen kannst), 2) das Ziel (das im nächsten Schritt geprüft wird) und 3) der Text des Links - um ihn ggf. einzusetzen.
Danach prüfst Du, ob der Link auf Deine Domain verweist. Falls Du auch relative Links (ohne Domain) zuläßt, wüßte ich noch nicht einmal, wie das gehen soll.
Verweist der Link auf eine fremde Domain, ersetzt Du - per String-Ersetzen, nicht mit RE-Hilfe - den ganzen Link durch den Text, sonst tust Du nix weiter.
Du wirst übrigens evtl. noch Probleme bekommen, wenn im Text mehrere Links vorkommen. Um bei ungefähr Deinem RE zu bleiben: Wenn Du mit /<a href=(.*)>(.*)</a>/
in '<a href="www.ext.de">1</a> und <a href="www.mein.de">2</a>' suchst, findest Du nicht etwa erstens '"www.ext.de"' und '1' und zweitens '"www.mein.de"' und '2', sondern '"www.ext.de">1</a> und <a href="www.mein.de"' und '2' (nur eine Fundstelle). Das liegt an der "Gierigkeit" der REs (.* nimmt sich prinzipiell so viel wie möglich); sowas wie "Klammern" kann man da kaum mit ordentlich verarbeiten.
(Helfe mit Gott, daß das Forum das ganze HTML nicht kaputt-parse ;))
-
Du wirst übrigens evtl. noch Probleme bekommen, wenn im Text mehrere Links vorkommen. Um bei ungefähr Deinem RE zu bleiben: Wenn Du mit /<a href=(.*)>(.*)</a>/
in '<a href="www.ext.de">1</a> und <a href="www.mein.de">2</a>' suchst, findest Du nicht etwa erstens '"www.ext.de"' und '1' und zweitens '"www.mein.de"' und '2', sondern '"www.ext.de">1</a> und <a href="www.mein.de"' und '2' (nur eine Fundstelle). Das liegt an der "Gierigkeit" der REs (.* nimmt sich prinzipiell so viel wie möglich); sowas wie "Klammern" kann man da kaum mit ordentlich verarbeiten.
Lässt sich abstellen - ich weiß zwar grad nicht wie, aber ich weiß, dass es sicher geht ;)
Zum Rest: Eventuell irgendwas a la "<a href=^(www.meinedomain.de)*>"? Bin jetzt auch nicht SO der RegExp-Held.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage