WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 01.08.2019 16:46:22

boeseroeser
Gast

RegEx-Frage

Ich werde die Dinger nie verstehen...

Wie entferne ich aus einem <table    > ein width="irgendwas" ?
Oder in  style=".... width:irgendwas;......"
Also nicht das ganze style-Attribut, sondern nur den Teil mit width=

Idealerweise nur, wenn das width:irgendwas; nicht länger als zb 12 Zeichen ist, um gröbere Zerstörungen zu vermeiden.

Beitrag geändert von boeseroeser (01.08.2019 16:48:46)

#2 01.08.2019 23:34:45

jean
Mitglied

Re: RegEx-Frage

... das wäre als style-Attribut z.B.

[== HTML ==]
<div style="width:12">
width:\s*[0-9]{1,12}\;*

Das regex sucht:
width: - "width:"
\s* - kein oder mehrere Leerzeichen (vielleicht stehen da ja mal welche)
[0-9]{1,12} - eine bis maximal 12 Ziffern (ggf. noch eine Einheit [a-z]{2,3} )
\;? - kein oder ein ";" (falls im style-Attribut nach dem width noch weitere Formate folgen)

Wenn es um die (deprecated) width-Angabe in einem table geht, dann sollte es so aussehen:

[== HTML ==]
<table width=12 ...>
width=['"]*[0-9]*['"]*

hier wird gesucht:
width= - "width="
['"]? - kein oder ein Anführungszeichen (' oder ")
[0-9]+ - eine oder mehrere Ziffern
['"]? - kein oder ein Anführungszeichen

... nicht probiert, sollte aber klappen - wenn ich mich nicht vertippt habe ;)

Offline

#3 02.08.2019 10:56:24

boeseroeser
Gast

Re: RegEx-Frage

Hallo und Danke, Jean

Ich habe mich gestern noch näher mit dem Thema "Wie bereinige ich Saustall-HTML" ;-) befasst, anhand einiger Muster.
Der erste Gedanke war natürlich über (mehr oder weniger zahlreiche) RegEx-Schnippel, habe dann aber gemerkt, dass das sehr schwierig ist. Es gibt ja auch noch die ganzen Einheiten (px, pt, em,%), solche und solche Anführungszeichen, dies und das.
Da wird man verrückt, wenn man da mal anfängt.

Eine Aufgabe wie:
> Lösche alle Style-Attribute + Werte außer ['color', background',background-color', ... ]
> Alles mit color:#0ff soll in H2 umgewandelt werden und dann die Farbe löschen.
ist mit RegEx wohl gar nicht mehr zu bewältigen, nehme ich an.

#4 02.08.2019 11:19:56

webbird
Administrator

Re: RegEx-Frage

Vielleicht HTMLTidy


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Online

#5 02.08.2019 12:59:14

berny
Mitglied

Re: RegEx-Frage

mal so neu blöde frage als Querdenker: die Styles mit important überschreiben geht nicht?

Offline

#6 02.08.2019 13:30:49

jean
Mitglied

Re: RegEx-Frage

> ist mit RegEx wohl gar nicht mehr zu bewältigen, nehme ich an.

... doch, das geht. Ich habe so mal viele tausend Seiten aus einem alten Auftritt gespeichert, regex-iert und in ein neues CMS importiert. RegEx kann so lustige Sachen wie lookahead / lookbehind (also Sachen auswählen, je nachdem, was davor oder dahinter steht), und viel Logik steckte auch in meinem Parser-Skript. Ist dann aber nicht ganz trivial und ziemlich viel Versuch-und-Irrtum. Ich war immer bannig stolz auf meine RegEx-Konvertierungs-Skripte :) - aber bei einigen Auftritten ist es dann einfacher, alles zu speichern / parsen, alle Tags wegzuwerfen und per Hand (oder auch via RegEx / Skript) neu zu schreiben.

> Lösche alle Style-Attribute + Werte außer ['color', background',background-color', ... ]
> Alles mit color:#0ff soll in H2 umgewandelt werden und dann die Farbe löschen.

... nicht alleine mit RegEx (das sucht ja nur), aber zusammen mit der Programmiersprache deines Vertrauens geht das recht einfach.

Tidy und andere Linter können ein generell bischen helfen, aber das reicht nicht weit.

Offline

#7 02.08.2019 13:34:37

stefanek
Core-Team

Re: RegEx-Frage

Seit WBCE 1.4.0 ist das OpF Dashboard mit an Bord.
Damit geht es super einfach.

Wenn Lernbereitschaft vorhanden, kann ich einen Beispielcode zur Verfügung stellen.
Wenn nicht, auch OK.

Christian


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#8 02.08.2019 14:26:53

boeseroeser
Gast

Re: RegEx-Frage

Ich hab mich gestern abend noch etwas herumgespielt - und bin dann auf jQuery gekommen, was mir deutlich besser liegt (Ich verstehe wenigstens die Beispiele im Web, bei RegEx schaue ich wie der Ochse vorm Tor)

jQuery hat den Vorteil, dass man praktisch sofort Sichtkontrolle hat - und dass man sich immer im DOM bewegt. Fasst man den Start-Tag an, muss man sich um den SchlussTag nicht mehr kümmern. Fatale Fehler kann man also nicht machen.
Nachteil: Man muss es am Ende wieder in die DB bringen, aber das ist machbar.

Was ich nicht geschafft habe:
<span style="width:100px"><span class="bunt" style="color:#acc"><span class="klein" style="font-size:12pt">Wort</span></span></span>
zu
<span class="bunt klein" style="width:100px, color:#acc; font-size:12pt">Wort</span>
zusammen zu fassen.

@stefek: Geht das mit dem OpF Dashboard?

#9 02.08.2019 14:37:19

stefanek
Core-Team

Re: RegEx-Frage

Mit dem OpF Dashboard geht so gut wie alles.
Aber für das letzte Beispiel müsste man wieder mehr fummeln.


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#10 02.08.2019 16:33:45

boeseroeser
Gast

Re: RegEx-Frage

jQuery - ein Beispiel, wie ich das jetzt gelöst habe:

https://wbce.at/tags-bereinigen.js
Geht auf den Contentbereich .maincontent
#darein ist eine textarea, zur Kontrolle.

Die Testseite ist vorübergehend: https://wbce.at/de/leere-seite.php

Putzt eigentlich recht brav durch. Auch die verschachtelten spans sind gelöst (war knifflig..)

#11 02.08.2019 17:29:33

jean
Mitglied

Re: RegEx-Frage

OpF kenne ich nicht und habe ich nie probiert, und ja, mit JQ und JS als Skript-Sprache bekommt man das auch gut hin - aber dann benötigt man ja doch ein paar Extra-Klimmzüge, um das aus dem DOM in eine Datei / DB zu bekommen.  Aber stimmt: das Ansprechen der Tags ist mit JQ schon geschmeidiger ...

Offline

#12 06.08.2019 17:01:15

jean
Mitglied

Re: RegEx-Frage

(nur als Ergänzung: natürlich kann PHP auch recht bequem das DOM parsen und modifizieren - als Überblick https://stackoverflow.com/questions/357 … xml-in-php )

Offline

Fußzeile des Forums

up