Regulärer Ausdruck zur Auto-Korrektur

aKraus

Erfahrenes Mitglied
Hallo,

ich habe zwar versucht mit Hilfe des Tutorials (http://www.amk.ca/python/howto/regex/) einen String zu erstellen, welcher meinen Anforderungen gerecht wird, allerdings bekomme ich es nicht wirklich hin.

Also, zu meinem Problem:
Ich will einen String, welcher überprüft, ob mein A-Tag das Attribute "target" besitzt. Sollte dies der Fall sein, muss der Wert dieses Attributes "_blank" sein. Ansonsten soll dieser ersetzt werden. Sollte kein Target vorhanden sein, soll dieses angelegt werden und ebenfalls den Wert "_blank" besitzen. Des Weiteren soll ein Link, welcher zwar Text mäßig gesehen einer ist, allerdings in keinem A-Tag steht, zu einen Link umgewandelt werden und auch mit das Target "_blank" enthalten. (http://domain.de/folder/file.php --> <a href="http://domain.de/folder/file.php" target="_blank">http://domain.de/folder/file.php</a>).

Ich weiß, es ist viel Aufwand einen derartigen String zu erstellen, allerdings bin ich für jede Hilfe dankbar. Ich selbst spiele seit 2 Tagen rum, habe ge:google:d und mich durch einige Tutorials gequält - allerdings leider erfolglos :(


Gruß
 
Warum muss es unbedingt ein einziger RegEx sein? Du erleichtest dir das Leben ungemein, wenn du if und else benuzt und das ganze in mehrere Reguläre Ausdrücke ummodelst.
 
Reguläre Ausdrücke sind für diesen Fall tatsächlich etwas überbewertet und unnützlich.

Mal eine andere Frage: Wozu möchtest du eigentlich bestimmen, dass die Verweise nicht im selben Fenster geöffnet werde sollen? Lass dies doch einfach den Benutzer entscheiden.
 
con-f-use hat gesagt.:
Warum muss es unbedingt ein einziger RegEx sein? Du erleichtest dir das Leben ungemein, wenn du if und else benuzt und das ganze in mehrere Reguläre Ausdrücke ummodelst.

natürlich kann dies auch in zwei Ausdrücken geschehen. An so einer Kleinigkeit hänge ich mich mal nicht auf. ;)

con-f-use hat gesagt.:
Mal eine andere Frage: Wozu möchtest du eigentlich bestimmen, dass die Verweise nicht im selben Fenster geöffnet werde sollen? Lass dies doch einfach den Benutzer entscheiden.

Naja, ganz einfach. Ich benutze den FCKeditor. Diesen habe ich beispielsweise bei den Newskommentaren meiner Page eingebaut und lediglich Fett, Kursiv, Unterstrichen & den Link freigegeben. Allerdings sind die meisten Benutzer relativ unerfahren in Sachen HTML und lassen die Links immer im gleichen Fenster öffenen. Dies will ich verhinden ;)



So Long
 
Warum wird jeder Link, welchen du hier in diesem Thread postest, in einem neuen Fenster geöffnet? Ganz einfach: um den Besucher genau auf dieser Page zu halten. Ich kann nicht ganz nachvollziehen, warum ich dies begründen muss?

Ich stellte eine Frage bzw. habe Hilfe gesucht und will mich jetzt auf keine Diskussion über den Sinn und Zweck des Zieles eines Links einlassen.
 
Mir geht es darum, dir auch die andere Seite der Medaille vor Augen zu führen. Klar bleibt es schlussendlich deine Entscheidung, ob du den Benutzer dazu zwingst, dass Verweise in neuen Fenster geöffnet werden. Ich spreche mich aber klar dagegen aus und wollte dir diese Meinung nur nahelegen.

Um nun zurück zum Thema zu kommen: Probier mal Folgendes, bisher noch nicht getestetes:
PHP:
preg_replace('/(<a[^>]*?target=")[^"]*("[^>]*>)/', '\1_blank\2', $string)
Das Muster für den anderen Fall muss ich noch finden.
 
Hi,

das ganze klappt soweit. Jetzt hab ich allerdings ein anderes Problem bemerkt:
Die Länge des angezeigten Textes darf nicht länger als 30 Zeichen sein, da sonst mein Design gesprengt wird . Dafür soll mitten im String Buchstaben durch 3 Punkte ersetzt werden. (http://domain.de/folder/folder/folder/folder/folder/file.php --> <a href="http://domain.de/folder/folder/folder/folder/folder/file.php" target="_blank">http://domain...der/file.php</a>
 
Zurück