SUCHE Regular Expression

Alles, was PHP betrifft, kann hier besprochen werden.

SUCHE Regular Expression

Postby boppy » 11. March 2005 15:19

Hallo Forum,

ich muss ganz ehrlich zugeben, dass ich ein absoluter RegEx-n00b bin und es auch nach 2 Stunden Buch studieren einfach nicht so recht Ralle. Folgendes Problem:

gegeben:

Code: Select all
$var = "Dies ist eine Einleitung. Hier nun eine Liste:
<ul>
<li>narf</li>
<li>narf 2</li>
</ul>
Hier folgt nun der weitere Text.

Alles schön mit leerzeilen getrennt...";

echo(nl2br($var));


Nun möchste ich im Grunde den nl2br nicht löschen, aber ich möchte AUCH nicht, dass er mit nach jedem umbruch, der HTML enthält einen <br /> setzt. das sieht dann nämlich so aus:
Code: Select all
nl2br($var) = "Dies ist eine Einleitung. Hier nun eine Liste:<br />
<ul><br />
<li>narf</li><br />
<li>narf 2</li><br />
</ul><br />
Hier folgt nun der weitere Text.<br />
<br />
Alles schön mit leerzeilen getrennt...";

Das sieht im Browser natürlich schlecht aus und der code ist dann auch alles, aber nicht valid HTML. Nunja, ich bräuchte also einen Regex der mit zeilenumbrüche im bereich <ul> bis </ul> löscht, aber die anderen unangetastet lässt...

wenn wer eine Idee hat, wär ich suuuuper-dankbar.

2 kleinigkeiten noch:
- Das ergebnis muss hoch-performant sein. 1000 gleichzeitige nutzer ist keine seltenheit und trotzdem soll das sys nicht in die knie gehen...
- eine Doku dazu (bzw kommentare) wären super-toll, damit ich vielleicht auch watt davon lernen kann...


herzlichsten Dank schonmal...[/code]
...in diesem Sinne
yours boppy

Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
User avatar
boppy
AF Moderator
 
Posts: 501
Joined: 27. December 2002 02:15
Location: W-E-City

Postby insane.eye » 12. March 2005 16:12

Hi !

Ist nicht der schönste Weg, aber immerhin. :D

Code: Select all
<?
$var = "Dies ist eine Einleitung. Hier nun eine Liste:
<ul>
<li>narf</li>
<li>narf 2</li>
</ul>
Hier folgt nun der weitere Text.

Alles schön mit leerzeilen getrennt...";

$var = ereg_replace("> *\r",">",$var); // Entfernt Zeilenumbrüche und evt. Leerzeichen nach einem HTML-Tag.
$var = ereg_replace("\r","<br>",$var); // Ersetzt die noch übrig gebliebenen Umbrüche zu '<br>'-Tags.

echo $var;
?>

Mfg eye 8)
insane.eye
 
Posts: 8
Joined: 16. January 2005 01:19

Postby Stefan » 12. March 2005 16:40

Knifflig, wenn es _nur_ Listen und nicht alle Htmltags betrifft, könntest Du es auch mal damit versuchen.
Code: Select all
$suchmuster = array ("'<ul><br \/>'si",
                "'<\/li><br \/>'si",
                "'<\/ul><br \/>'si"
               );

$ersatz = array ("<ul>",
                  "</li>",
                  "</ul>"
                 );
echo preg_replace($suchmuster, $ersatz, nl2br($var));

Ob das allerdings besonderst performant ist, kann ich nicht beurteilen.
Frag doch mal die Spezies in de.comp.lang.php.misc, da bekommst Du sicher notwendige Hinweise.

viel Erfolg, ciao
Stefan
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Postby boppy » 12. March 2005 17:32

Stefan wrote:Knifflig, wenn es _nur_ Listen und nicht alle Htmltags betrifft, könntest Du es auch mal damit versuchen.
Code: Select all
$suchmuster = array ("'<ul><br \/>'si",
                "'<\/li><br \/>'si",
                "'<\/ul><br \/>'si"
               );

$ersatz = array ("<ul>",
                  "</li>",
                  "</ul>"
                 );
echo preg_replace($suchmuster, $ersatz, nl2br($var));

Ob das allerdings besonderst performant ist, kann ich nicht beurteilen.
Frag doch mal die Spezies in de.comp.lang.php.misc, da bekommst Du sicher notwendige Hinweise.

viel Erfolg, ciao
Stefan
*g* so werde ich machen. das gleich wurde mir auch schon auf einem anderen bopard geraten. manchmal möcht ich mich echt selbst schlagen, wenn ich mal wieder den wald vor bäumen nicht sehen...

danke!!!
...in diesem Sinne
yours boppy

Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
User avatar
boppy
AF Moderator
 
Posts: 501
Joined: 27. December 2002 02:15
Location: W-E-City


Return to PHP

Who is online

Users browsing this forum: No registered users and 38 guests