• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

BBCode List ala Stackoverflow (Regex?)

CGollhardt

Mitglied
Hallo,

wie würdet ihr den List BBCode von Stackoverflow implementieren?

Also aus folgendem:

Code:
- Punkt 1
- Punkt 2
- Punkt 3

wird folgendes:

HTML:
<ul>
<li>Punkt 1</li>
<li>Punkt 2</li>
<li>Punkt 3</li>
</ul>

Mein Problem liegt primär am <ul></ul> Bereich.

Vielen Dank für eure Antworten.
 
Werbung:
nimm mal notepad++ und lass dir alle "nicht druckbaren zeichen" anzeigen. vllt wird es dann etwas klarer.
in etwa sollte es so aussehen: \n\n- Punkt 1\n- Punkt 2\n-Punkt 3\n\n
 
nin etwa sollte es so aussehen:
Code:
\n\n- Punkt 1\n- Punkt 2\n-Punkt 3\n\n

Genau aus dem will ich ja folgendes machen:
HTML:
<ul>
<li>Punkt 1</li>
<li>Punkt 2</li>
<li>Punkt 3</li>
</ul>

Ich glaube du hast mich missverstanden.

Ich möchte gerne so einen "BBCode" wie auf Stackoverflow (Simple List):
Markdown Editing Help - Stack Overflow

Optimalerweise auch Advanced List. Aber Simple würde mir erst mal reichen.

Die Frage ist nun wie das am besten gemacht wird? Ich vermute mal Regex der auf eine Zeile die mit "- " beginnt sucht. Aber problematisch sehe ich es dann bei <ul></ul>, anhand von welcher Suche sollen diese replaced werden?

Bei Regex kenne ich leider nur Basics.

Edit:
Jetzt sehe ich dass du auf die doppelten Linebreaks am Anfang und Ende anspielst, oder? Aber wie kriege ich sowas in einem Regex?

\n\n-(*.)\n
\n-(*.)\n\n
-\n(*.)\n

So würde ich es nacheinander machen, aber geht das auch mit nur einem Regex, damit ich sicherstellen kann, dass es nur reagiert wenn alles richtig ist? Und wie und mit welchen Modifikator erhalte ich \n?

Kenne mich mit dem ganzen Regex nicht aus, jedes mal ne andere Syntax.
 
Zuletzt bearbeitet:
Werbung:
im ansatz sollte das in etwas so aussehen:

Code:
$string = "\n\n- Punkt 1\n- Punkt 2\n-Punkt 3\n\n";

//den hier musst du dir selbst zusammen stricken, das zerrt auch immer an meinen nerven ;)
$pattern = ""  // \n\n-(alles inkl. \n aber ohne \n\n)\n\n;

$string = preg_replace_callback($pattern, 'smallList', $string);
function smallList($match)
{}

tipp:
ein match für \n erhällst du mit dem pattern
Code:
$pattern = "#\\n#";
 
Zurück
Oben