forTeesSake Geschrieben 11. Juni 2004 Teilen Geschrieben 11. Juni 2004 hi und hallo, leider muss ich feststellen dass die regular expressions einfach meine fähigkeiten übersteigen, oder mir einfach nicht liegen. hab schon viel darüber gelesen und check die tutorials und erklärungen, wenns dann an selbermachen geht fehlt mir aber leider immer was. ich möchte gerne folgendes: in einem text sollen alle < durch < und > durch > ersetzt werden. aber nur wenn die < und > nicht zu einen <a href="...>xxx</a> tag gehören. auf deutsch: alle html tags sollen als solche dargestellt werden, ähnlich der "code" funktion hier im forum. aber <a> tags sollen wirklich links sein. kann mir da jemand helfen? vielen dank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 11. Juni 2004 Teilen Geschrieben 11. Juni 2004 Warum einfach, wenns auch schwer geht? Schau mal hier: http://de.php.net/manual/de/function.strip-tags.php in deinem Fall in etwa so: $result = strip_tags($source, '<a>'); [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 11. Juni 2004 Autor Teilen Geschrieben 11. Juni 2004 ohhhhhh! jetzt fällts mir ein was noch fehlte: das ganze brauch ich in einer ASP anwendung. die kennt keine strip_tags funktion, also brauch ich wirklich die richtige regex sorry, stimmt schon normalerweise poste ich nur noch php-threads Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
computercrustie Geschrieben 11. Juni 2004 Teilen Geschrieben 11. Juni 2004 "/(<)/" -> "<" "/(>)/" -> ">" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 11. Juni 2004 Autor Teilen Geschrieben 11. Juni 2004 "/(<)/" -> "<" "/(>)/" -> ">" und wenn es ein <a> tag ist soll nix replaced werden...wo is die funktionalität?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
computercrustie Geschrieben 11. Juni 2004 Teilen Geschrieben 11. Juni 2004 und wenn es ein <a> tag ist soll nix replaced werden...wo is die funktionalität?? Stimmt, daran hab ich gar nicht gedacht! Ich überleg noch mal, poste wenn ich was habe. [EDIT] Gibt es denn irgendwelche Erkennungsmerkmal in deinem Text, ob es sich um ein Tag handelt oder nicht (zum Beispiel: bei Tags folgt direkt auf < ein Buchstabe, sonst ein Leerzeichen oder eine Zahl) ? [/EDIT] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 11. Juni 2004 Teilen Geschrieben 11. Juni 2004 Ich hoffe ASP kanns. Mit .NET klappts (getestet unter: http://www.regexlib.com/RETester.aspx ). `{</?(?!a\s+)\w+(\s*\w*=["|'].+?["|'])*\s*/?>}` [/PHP] Funktioniert für öffnende und schliessende Tags. Einzige Fehler noch: theoretisch sind 2 slashes in einem schliessenden Tag möglich. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 11. Juni 2004 Autor Teilen Geschrieben 11. Juni 2004 wow...so viel ist das??? muss ich mich mal laaaaange hinsetzen und das checken. mir ist aber noch nicht klar wie genau bzw. wo genau das ersetzen wirklich stattfindet. ich meine: wo genau wird das < durch < ersetzt? mann ist das peinlich da gar keine ahnung zu haben... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 11. Juni 2004 Teilen Geschrieben 11. Juni 2004 Ersetzung findet keine statt. Das ist das Suchmuster. suchmuster: <(/?(?!a\s+)\w+(\s*\w*=["|'].+?["|'])*\s*/?)> ersetzen: <\1> ggf. <\$1> für php (ja ich weiss du nimmst keins): $neu = preg_replace("{<(/?(?!a\s+)\w+(\s*\w*=["|'].+?["|'])*\s*/?)>}","<\$1>",$alt); [/PHP] ich hoffe mal, ich habe mich da jetzt nicht vertan Der Link ist für .NET: http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemTextRegularExpressionsRegexClassReplaceTopic.asp Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
computercrustie Geschrieben 11. Juni 2004 Teilen Geschrieben 11. Juni 2004 Ich habe etwas: /(<[^a|\/])/si findet alle <, denen kein "a" oder "/" direkt folgt /(?<!<\/a|\")>/si findet alle >, vor denen direkt kein </a und kein " steht Das bedeutet auch, dass link-Tags immer so geschrieben werden müssen: <a href=".."> </a> (ohne Leerzeichen oder sonstiges hinter "<" bzw. vor ">") und demzufolge einem >, das ersetzt werden soll, kein ",a oder A voransteht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 11. Juni 2004 Autor Teilen Geschrieben 11. Juni 2004 danke ihr beiden für die grosse mühe die ihr euch gegeben habt. ich werde das gleich umsetzen! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 11. Juni 2004 Autor Teilen Geschrieben 11. Juni 2004 @computercrustie schade, mit deiner lösung klappts nicht, da ich ja an das schliessende > des "a" tags nicht rankomme: <a href="test.html">test</a> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
computercrustie Geschrieben 11. Juni 2004 Teilen Geschrieben 11. Juni 2004 Seltsam, bei mir funktionierts einwandfrei. Aber es könnte vielleicht daran liegen, dass ich die preg-funktionen von PHP benutze und nicht ASP. $parr = array("/(?<!<\/a|\")>/si","/(<[^a|\/])/si"); $rarr = array(">","<"); $text=<<<ENDTEXT in einem text sollen alle < durch < und > durch > ersetzt werden. aber nur wenn die < und > nicht zu einen <a href="...">xxx</a> tag gehören. ENDTEXT; echo preg_replace($parr,$rarr,$text); [/PHP] ergibt: [code] in einem text sollen alle <durch < und > durch > ersetzt werden. aber nur wenn die <und > nicht zu einen <a href="...">xxx</a> tag gehören. [/code] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 11. Juni 2004 Autor Teilen Geschrieben 11. Juni 2004 etzadla ja, da war er wieder der schlauch... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.