tags:

views:

78

answers:

2

Hi all people!

I'm creating a CMS as you might already know, and now I have a lil' problem.

Lets say: I have a textfile containing this:

[b]Some bold text[/b]
[i]Italic[/i]
- List item 1
- List item 2
- List item 3
# List item 1
# List item 2
# List item 3

And I want to convert it to:

<b>Some bold text</b>
<i>Italic</i>
<ul>
    <li>List item 1</li>
    <li>List item 2</li>
    <li>List item 3</li>
</ul>
<ol>
    <li>List item 1</li>
    <li>List item 2</li>
    <li>List item 3</li>
</ol>

The bold and italic work (with regexes), but how do I do the lists?

The '-' list should be transformed to

<ul>
    <li>List item 1</li>
    <li>List item 2</li>
    <li>List item 3</li>
</ul>

And the '#' list to

<ol>
    <li>List item 1</li>
    <li>List item 2</li>
    <li>List item 3</li>
</ol>

Does anybody have experience with this? Please help me. I'm using PHP 5.2.9

+2  A: 

You might consider using another markup language such as Markdown or Textile. Then you would just have to deal with a library.

scompt.com
Sorry, but I don't prefer libs. They are far too big in file size. My CMS may not exceed 3000 bytes.
Time Machine
+3  A: 

If you don't want to use an existing parsing library, you have to parse the file line by line, and to keep the current state somewhere.

If the lines starts with " - ", and the state tells you that you're not already in a list, put a <ul> plus a <li>. If you're already in a list, just put the <li>.

Same thing with lines starting with " # ".

FWH
Thanks, I dont prefer those libraries because they are about 18kb which is too big. I think I'll start list items with </li><li> to make valid XHTML.
Time Machine