Hi,
Dafür habe ich mir jetzt volgende pattern überlegt, die soweit auch funktionieren. Ich musste allerdings zwei benutzen:
$content = preg_replace ('=([/t(r|d)])\s(<br />)+=Uis', '$1' , $content);
$content = preg_replace ('=(<br />)+\s*?([/*t(r|d)])=Uis', '$2' , $content);
> Das Ergebnis der beiden Beispiele würde dann so aussehen:
> `[tr][td]blub[/td][td]bl<br>a[/td][/tr][tr][td]blubb[/td][td]blaa[/td][/tr]`{:.language-html}
Obs einfacher ist, weiß ich nicht, aber wäre auch eine Möglichkeit:
~~~php
// Klammern: |1 |2 |3
$content = preg_replace('~(\])?\s*(<br />\s*)+(?(1)|(\[))~i','\1\3',$content);
Wenn kein schließender Pseudo-Tag vor \s*(<br />\s*)+ kommt, muß ein schließender danach kommen, nur dann wird die Gruppe (2) und beliebig viele \s davor entfernt. Kann man natürlich noch erweitern t(d|r) usw.
Gute Nachtruhe,
Jonny 5