Jonny 5: preg_replace - vereinfachen?

Beitrag lesen

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