Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Probleme mit Aufzählung

  1. #1
    Registrierter Benutzer Avatar von SeCa
    Registriert seit
    07.11.2002
    Beiträge
    64

    Probleme mit Aufzählung

    hallo zusammen,
    ich hab nach langer zeit wiedermal eine frage bezüglich PHP. Ich hoffe ihr könnt mir helfen:

    In einer Textarea gibt der User Text ein. Meistens kopiert aus dem Word. Dabei hat es im Text auch Aufzählungen mit Punkten (ASCII= 149). Das sieht etwa so aus:
    Code:
    dies ist eine Aufzählung:\n
    (punkt) erstens\n
    (punkt) zweitens\n
    (punkt) dritens\n
    ich möchte jetzt mithilfe von regulären Ausdrücken das ganze in HTML konvertieren.

    Code:
    dies ist eine Aufzählung:\n
    <ul>
      <li>erstens</li>\n
      <li>zweitens</li>\n
      <li>dritens</li>\n
    </ul>
    Das <li> am Anfang ist keine Sache, aber wie finde ich hereaus das ich am Schluss der Zeile ein </li> setzen muss? Und wie weiss ich wo anfang und Ende der Liste ist, damit ich dort <ul> setzen kann? Ich blick da einfach nicht durch.
    Könnt ihr mir bitte helfen? Vielen Dank

  2. #2
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Poste doch mal ein wenig Code aus deiner Word Datei, sonst
    wird das hier nix.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  3. #3
    Registrierter Benutzer Avatar von SeCa
    Registriert seit
    07.11.2002
    Beiträge
    64
    hallo,
    ich verstehe nicht recht was du mit "Code" aus der worddatei meinst? Im word sieht das dann so aus:
    Code:
    Sie wird auf unterschiedliche Arten gespielt:
    •	durch Schwingung
    •	japanische Spielweise
    •	mit drei Trommeln)
    
    Bildmaterial siehe Fotogalerie
    dies gibt der User dann in die textarea ein. daraus möchte ich dann eine aufzählung im html-format machen. ich hoffe ihr könnt damit etwas anfangen.

  4. #4
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    Hi,

    also das umwandeln in Listenelemente kannst Du so machen:
    Code:
    $String =~ s/\x95(.*?)\n/<li>$1<\/li>\n/sg;
    Allerdings wird das noch nicht viel nützen, denn Du musst ja auch noch das einleitende <ul> und das abschließende </ul> einbringen...

    Eine Möglichkeit wäre, den String in ein Array zu split()en und dann zeilenweise vorzugehen...

    Wenn ein ListItem geöffnet wird und es das erste ist, <ul> einfügen.
    Wenn ein ListItem beendet wird und kein weiteres mehr folgt, ein </ul> einfügen.

    Ganz einfach könnte man es sich machen, wenn du statt der <li>´s einfach <span>´s oder <div>´s nimmst, und sie entsprechend formatierst. Obwohl das nicht gerade dem Konzept einer Beschreibungssprache entspricht...

  5. #5
    Registrierter Benutzer Avatar von SeCa
    Registriert seit
    07.11.2002
    Beiträge
    64
    hab ein bisschen wenig zeit. Aber ich habe hier eine hässliche, aber funktionierende lösung:
    PHP-Code:
    function string_li_insert($s){
        
    $pattern '=\x95(.*)<br />=';
        
    $zeilen explode("\n",$s);
        
    $text "";
        
    $key 0;
        
    $last 0;
        foreach(
    $zeilen as $key => $z){
            if(
    preg_match($pattern$z$txt)){
                if(
    $key-$last != 1){
                    
    $text $text."<ul>\n";
                }
                
    $last =$key;
                
    $text $text."<li>".$txt[1]."</li>\n";
            }else{
                if((
    $key-$last == 1)and($last != 0)){
                    
    $text $text."</ul>\n";
                }
                
    $text $text.$z."\n";
            }
        }    
        return 
    $text;

    Verbesserungsvorschläge immer willkommen
    danke für eure hilfe


    edit: Ah ja das <br /> hat ein nl2br() vorher schon reingeflickt
    Geändert von SeCa (28-09-2005 um 12:35 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    so evtl.?

    PHP-Code:
    $AnzahlItems substr_count($string,"\x95");
    for(
    $i=0;$i<$AnzahlItems;$i++)
    {
      
    $pattern  "/\x95(.*?)<br \/>/";
      
    $replace  $i=="<ul>\n<li>\\1" "<li>\\1";
      
    $replace .= $i==$AnzahlItems-"</li>\n</ul>" "</li>";
      
    $string preg_replace("$pattern",$replace,$string,1);
    }
    echo 
    $string


    auch nicht unbedingt übersichtlicher, oder?
    EDIT: Naja... wenn ich´s mir so schön formatiert anseh´, ist evtl. doch etwas einfacher zu lesen, als die andere Lösung
    Geändert von michael.sprick (28-09-2005 um 15:04 Uhr)

  7. #7
    Registrierter Benutzer Avatar von SeCa
    Registriert seit
    07.11.2002
    Beiträge
    64
    oh vielen dank.
    Nicht übersichtlicher aber läuft
    Meine funktion hatte immer wieder probleme

Lesezeichen

Berechtigungen

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