Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Wiki-Code <-> HTML-Code

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.08.2004
    Ort
    Bonn
    Beiträge
    15

    Wiki-Code <-> HTML-Code

    Hallo,

    ich komme gerade bei einem Problem nicht wirklich weiter. Es geht um Wiki-Code, den ich nach HTML umwandeln möchte und vor allem auch umgekehrt.

    Beispiel:

    Wiki-Code:
    Code:
    * a
    * b
    ** c
    * d
    wird zu HTML-Code:
    Code:
    <ul><li>a</li><li>b<ul><li>c</li></ul></li><li>d</li></ul>
    Die Umwandlung von Wiki- nach HTML-Code habe ich mittlerweile in den Griff bekommen:
    PHP-Code:
    private function makeList($in)
        {
        
    $in trim(str_replace('\"''"'$in));

        
    $out '';
        
    $last 0;

        foreach (
    explode("\n"$in) as $line)
            {
            
    $cur 0;

            
    /* Ermittle die aktuelle Tiefe */
            
    while (strlen($line) > $cur && $line[$cur] == '*')
                {
                
    $cur++;
                }

            
    /* eine Ebene tiefer */
            
    if ($cur $last)
                {
                
    $cur $last 1;

                
    $out .= '<ul>';
                }
            
    /* eine oder mehrere Ebene höher */
            
    elseif ($cur $last)
                {
                
    $out .= '</li>';

                for (
    $j $last$j $cur$j--)
                    {
                    
    $out .= '</ul></li>';
                    }
                }
            else
                {
                
    $out .= '</li>';
                }

            
    /* Füge Zeile ohne Ebenenzeichen und Leerzeichen (+1) hinzu */
            
    $out .= '<li>'.substr($line$cur+1);

            
    $last $cur;
            }

        
    /* Alle geöffneten Tags auf jeden Fall schließen */
        
    while ($cur 0)
            {
            
    $out .= '</li></ul>';
            
    $cur--;
            }

        return 
    $out;
        } 
    Nur jetzt bekomme ich Rückwandlung nicht hin. Hat hier jemand vielleicht eine gute Idee? Ich stehe da ziemlich aufm Schlauch ;-)

    Grüße

    Pierre

  2. #2
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    besorg dir den quellcode der wiki-software und schau wies da gemacht wird.

    (das was für Wikipedia gebraucht wird: http://www.mediawiki.org/wiki/MediaWiki)
    Geändert von jeebee (19-03-2006 um 15:14 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    13.08.2004
    Ort
    Bonn
    Beiträge
    15
    Hallo,

    ich habe mir mich mal vom Algorithmus von coWiki inspirieren lassen. Das Ganze habe ich vereinfacht und refaktorisiert:
    PHP-Code:
    private function unmakeList($in)
        {
        
    $in str_replace('\"''"'$in);
        
    $in str_replace('</li>'''$in);

        
    $out '';
        
    $depth 0;

        while (
    preg_match('/<([^>]*)>([^<]*)(.*)/sS'$in$matches))
            {
            switch (
    $matches[1])
                {
                case 
    'ul' :
                    
    $depth++;
                break;

                case 
    'li' :
                    
    $out .= str_repeat('*'$depth).' '.$matches[2]."\n";
                break;

                case 
    '/ul' :
                    
    $depth--;
                    if (
    $depth == 0)
                        {
                        
    $out .= $matches[2];
                        }
                break;
                }

            
    $in $matches[3];
            }

        return 
    $out;
        } 
    Bisher scheint es zu funktionieren.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •