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

[ERLEDIGT] Liste erkennen und ersetzen

Hi,

ich würde gerne folgende Eingabe (per POST aus einer textarea übermittelt):
Code:
> Loret Ipsum Dolor \n
durch
Code:
<li>Loret Ipsum Dolor</li>
ersetzen.

Dies soll zusätzlich von <ul>...</ul> umschlossen sein. Kommen mehrere <li>'s nacheinander vor, sollen diese ins gleiche <ul>.

Die Listenelemente befinden sich im Normalfall in mitten eines Fließtexts.

Kann mir jemand einen Tipp geben, wie ich das am besten anstelle? Habe an RegEx gedacht, bekomme es aber nicht so hin, wie ich möchte (spätestens bei den <ul>'s wirds schwierig...)

Vielen Dank im Vorraus!
 
Werbung:
Eine Lösung mit PHP:
PHP:
$values = explode("\n", $text_aus_textarea);

$list = "<ul>\n";

foreach ($values as $value)
  $list .= "<li>$value</li>\n";

$list .= "</ul>";
 
Erstmal Danke für deine Antwort.

Allerdings schreibt dein Script ja einfach jede Zeile in ein Listenelement.

Ich möchte aber, dass nur Zeilen die mit einem ">" beginnen zum Listenelement werden (siehe mein Eröffnungspost). Der restliche Fließtext soll unberührt bleiben. Es sollen außerdem mehrere Listen (jeweils umschlossen von einem <ul>) innerhalb des Fließtexts möglich sein.


Ein Beispiel:
Code:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim.

> Das erste Listenelement
> Ein zweites
> Und drittes

Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.

> Ein ersten Listenelement in einer zweiten Liste
> Und noch eins
wird zu
Code:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim.
<ul>
<li>Das erste Listenelement</li>
<li>Ein zweites</li>
<li>Und drittes</li>
</ul>
Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.
<ul>
<li>Ein ersten Listenelement in einer zweiten Liste</li>
<li>Und noch eins</li>
</ul>
 
Werbung:
Dann muss da halt noch eine if-Bedingung rein, wo ist das Problem?
 
Das Problem war drauf zu kommen wie die auszusehen hat. Habs aber mittlerweile hinbekommen - thx für deine Hilfe.......

Hier meine Lösung
PHP:
$inputLines = explode("\n", $input);
$descript = "";
 for($n=0;$n<count($inputLines);$n++)
{
        if($inputLines[$n-1]{0} != ">") $descript .= "<ul>\n";
        $descript .= ($inputLines[$n]{0} == ">") ? "<li>".str_replace("> ", "", $inputLines[$n])."</li>\n" : $inputLines[$n];
        if($inputLines[$n+1]{0} != ">") $descript .= "</ul>\n";
}
echo $descript;
 
Zurück
Oben