Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

REGEX: ich suche eine RegEx

Diskussion: REGEX: ich suche eine RegEx im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Moin HaBo, ich muss ganz ehrlich zugeben, dass ich ein absoluter RegEx-n00b bin und es auch nach 2 Stunden ...

Antwort
Alt 11.03.05, 15:22   #1 (permalink)
Member of Honour
 
Registriert seit: 20.10.01
boppy Leistung: Facit NTK
boppy eine Nachricht über ICQ schicken
Likes: 0
Standard REGEX: ich suche eine RegEx

Anzeige

Moin HaBo,

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:

PHP-Code:
$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:
PHP-Code:
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...
boppy ist offline   Mit Zitat antworten
Alt 11.03.05, 16:02   #2 (permalink)
Gulliver
Guest
 
Likes:
Standard

suche nach dem <ul> blabla </ul> block.

<ul>.*</ul>

Dann hast du in $_ zb alles was zwischen <ul> und </ul> steht.
Danach kannste die var nehmen und bequem alles rauskicken was du magst.

in Perl würde ein substitute etwa so aussehen : s/\n//g

Vielleicht schreibst nochmal in welcher Sprache du das machst

mfg
  Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 11.03.05, 16:53   #3 (permalink)
 
Benutzerbild von maedmexx
 
Registriert seit: 03.10.01
maedmexx Leistung: Facit NTK
Likes: 0
Standard

Code:
preg_replace("/(<\/?(ul|li|ol)(.+[^>])?>)<br \/>/Uis", "\\1", nl2br($var));
oder

Code:
str_replace(array("<ul><br />", "<li><br />", "</ul><br />", "</li><br />"), array("<ul>", "<li>", "<ul>", "<li>"), nl2br($var));


ich würde den ersten regexp bevorzugen, da er auch tags mit eigenschaften berücksichtigt, während das einfache str_replace dies nicht berücksichtigen kann und auch langsamer ist.

ps. ehm du wolltest eine kommentierung...

(<\/?(ul|li|ol)(.+[^>])?>)<br \/>

suche nach < mit optional folgendem /.
danach muss entweder ul oder li oder ul folgen.
optional dürfen jetzt belibiege zeichen folgen, die aber nicht > enthalten dürfen.
dann wird ein ><br /> erwartet.

die äussere klammer "matcht" einen teil des suchstrings. es ist immer der html-tag vor dem zeilenumbruch. den gefundenen gesamtstring ersetzen wir durch genau diesen "match". soll heissen: es bleibt immer nur der tag übrig, der hier in klammern auch beliebig erweitert werden kann durch weitere tags (ul, li, ol)
maedmexx ist offline   Mit Zitat antworten
Alt 11.03.05, 17:09   #4 (permalink)
Member of Honour
Themenstarter
 
Registriert seit: 20.10.01
boppy Leistung: Facit NTK
boppy eine Nachricht über ICQ schicken
Likes: 0
Standard

Zitat:
Original von maedmexx
Code:
str_replace(array("<ul><br />", "<li><br />", "</ul><br />", "</li><br />"), array("<ul>", "<li>", "<ul>", "<li>"), nl2br($var));
Oh man(n), wie peinlich... Da hätt ich aber auch selbst drauf kommen können... herzlichsten dank!

es dreht sich (natürlich) um PHP
boppy ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » REGEX: ich suche eine RegEx
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
RegEx Frage enkore Code Kitchen 4 14.08.09 23:52
Regex mit grep Serow Linux/UNIX 4 24.03.09 13:55
RegEx Zahlenprüfung Ook! Code Kitchen 8 26.10.08 19:58
php regex mauralix (Web-) Design und webbasierte Sprachen 6 31.03.07 20:35
Regex in C++ jesus Code Kitchen 4 17.01.07 18:15


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61