Text analysieren und Umwandeln

Binio

Erfahrenes Mitglied
Hallo Leute...
ich möchte ein aus der Datenbank gelesenen Text:
Code:
> Lieferumfang
- Mobiltelefon LG KS20, schwarz
- Akku 1050 mAh Li-Ion 
- Netzteil 
- Stereo-Headset 
- USB-Datenkabel 
- CD-Rom 
- Benutzerhandbuch 
> Hauptmerkmale
- 2-Megapixel-Kamera mit Fotoleuchte und 4fach- Digitalzoom
- MP3-Player
- integriertes Radio 
- GPRS / UMTS / HSDPA / WLAN
- PC-Synchronisation: ja
- Bluetooth
in
Code:
<ul>
  <li><strong>Lieferumfang</strong></li>
  <ul>
      <li>Mobiltelefon LG KS20, schwarz</li>
      <li>Akku 1050 mAh Li-Ion</li>
      <li>Netzteil</li>
      <li>Stereo-Headset</li>
      <li>USB-Datenkabel</li>
      <li>CD-Rom</li>
      <li>Benutzerhandbuch</li>
  </ul>
</ul>
<ul>
  <li><strong>Hauptmerkmale</strong></li>
  <ul>
      <li>2-Megapixel-Kamera mit Fotoleuchte und 4fach- Digitalzoom</li>
      <li>MP3-Player</li>
      <li>integriertes Radio</li>
      <li>GPRS / UMTS / HSDPA / WLAN</li>
      <li>PC-Synchronisation: ja</li>
      <li>Bluetooth</li>
  </ul>
</ul>
umwandeln.
durch die Zeichen > und - im Text kann man ja die ul und li setzen. Aber da ich in XHTML programmiere muss ich auch das Endstück setzen. Mit einer Forschleife ist es nicht möglich ein Zeilenumbruch festzustellen um das /li oder /ul zu setzen
Weiss einer ein Rat ?
 
Zuletzt bearbeitet:
Regular Expressions ;)

Habs mal komplett gelöst:

PHP:
<pre>
<?PHP

$s = "> Lieferumfang
- Mobiltelefon LG KS20, schwarz
- Akku 1050 mAh Li-Ion
- Netzteil
- Stereo-Headset
- USB-Datenkabel
- CD-Rom
- Benutzerhandbuch
> Hauptmerkmale
- 2-Megapixel-Kamera mit Fotoleuchte und 4fach- Digitalzoom
- MP3-Player
- integriertes Radio
- GPRS / UMTS / HSDPA / WLAN
- PC-Synchronisation: ja
- Bluetooth";

$s = preg_replace("/>\s*([^\n\r]*)/", "\n	</ul>\n</ul>\n<ul>\n	<li><strong>$1</strong></li>\n	<ul>", $s);
$s = preg_replace("/-\s([^\n\r]*)/", "		<li>$1</li>", $s);
$s = substr($s, 14) . "\n	</ul>\n</ul>";

echo htmlspecialchars($s);

?>
</pre>

Have Fun!

btw: Das ist so wie du es haben wolltest. Allerdings ist das so nicht valide. Die Unterpunkte müssen mit <li> ... </li> gemacht werden und dadrin dann <ul>.
Hier was valides:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
  <head>
    <title></title>
  </head>
  <body>
    <ul>
      <li>
        <strong>Lieferumfang</strong>

      </li>
      <li style="list-style: none; display: inline">
        <ul>
          <li>Mobiltelefon LG KS20, schwarz
          </li>
          <li>Akku 1050 mAh Li-Ion
          </li>
          <li>Netzteil
          </li>
          <li>Stereo-Headset
          </li>

          <li>USB-Datenkabel
          </li>
          <li>CD-Rom
          </li>
          <li>Benutzerhandbuch
          </li>
        </ul>
      </li>
    </ul>
    <ul>

      <li>
        <strong>Hauptmerkmale</strong>
      </li>
      <li style="list-style: none; display: inline">
        <ul>
          <li>2-Megapixel-Kamera mit Fotoleuchte und 4fach-
          Digitalzoom
          </li>
          <li>MP3-Player
          </li>

          <li>integriertes Radio
          </li>
          <li>GPRS / UMTS / HSDPA / WLAN
          </li>
          <li>PC-Synchronisation: ja
          </li>
          <li>Bluetooth
          </li>
        </ul>
      </li>
    </ul>

  </body>
</html>

Bin weg - American Dad fängt an ;)
 
Zuletzt bearbeitet:
Ich habe vieleicht sagen sollen das es so in der DB steht:

Code:
&gt; Lieferumfang&lt;br&gt;- Mobiltelefon LG KS20, schwarz&lt;br&gt;- Akku 1050 mAh Li-Ion &lt;br&gt;- Netzteil &lt;br&gt;- Stereo-Headset &lt;br&gt;- USB-Datenkabel &lt;br&gt;- CD-Rom &lt;br&gt;- Benutzerhandbuch &lt;br&gt;&gt; Hauptmerkmale&lt;br&gt;- 2-Megapixel-Kamera mit Fotoleuchte und 4fach- Digitalzoom&lt;br&gt;- MP3-Player&lt;br&gt;- integriertes Radio &lt;br&gt;- GPRS / UMTS / HSDPA / WLAN&lt;br&gt;- PC-Synchronisation: ja&lt;br&gt;- Bluetooth&lt;br&gt;&gt; Ger&auml;tedaten&lt;br&gt;- Netz: Triband&lt;br&gt;- Gewicht: 95 g&lt;br&gt;- Akkukapazit&auml;t: 1050 mAh&lt;br&gt;- Stand-by-Zeit: 270 Std.&lt;br&gt;- Sprechzeit: 3 Std.&lt;br&gt;- Ma&szlig;e (HxBxT): 100 x 13 x 58 mm&lt;br&gt;- Display:  Touchscreen 262.144 Farben , 320 x 240 Pixel&lt;br&gt;- Speicher im Ger&auml;t: 128 MB&lt;br&gt;- Speicher erweiterbar mit Micro-SD-Karten&lt;br&gt;- Diktierfunktion&lt;br&gt;- Kalender&lt;br&gt;- E-Mail Client&lt;br&gt;- Freisprechfunktion&lt;br&gt;- MobileTV
ich dann mit
Code:
$temp = html_entity_decode($artikel_details['ARTIKELTEXT1'], ENT_QUOTES);
wieder zu dem mache was ich vorhingeschrieben habe.
Mein Quelltext sieht dann so aus:

Code:
$temp = html_entity_decode($artikel_details['ARTIKELTEXT1'], ENT_QUOTES);
//echo $temp."<br /><br /><br /><br />";
$temp = preg_replace("/>\s*([^\n\r]*)/", "\n</ul>\n</ul>\n<ul>\n<li><strong>$1</strong></li>\n<ul>", $temp);
//echo $temp."<br /><br /><br /><br />";
$temp = preg_replace("/-\s([^\n\r]*)/", "<li>$1</li>", $temp);
//echo $temp."<br /><br /><br /><br />";
$temp = substr($temp, 14)."\n</ul>\n</ul>";
echo $temp;
es ergibt sich aber der unten stehende Quelltext wenn ich es mir mit dem Browser angucke:

Code:
ul>
<li><strong>Lieferumfang<br>
<li>Mobiltelefon LG KS20, schwarz<br>
- Akku 1050 mAh Li-Ion <br>
- Netzteil <br>
- Stereo-Headset <br>
- USB-Datenkabel <br>
- CD-Rom <br>
- Benutzerhandbuch <br>
> Hauptmerkmale<br>
- 2-Megapixel-Kamera mit Fotoleuchte und 4fach- Digitalzoom<br>
- MP3-Player<br>
- integriertes Radio <br>
- GPRS / UMTS / HSDPA / WLAN<br>- PC-Synchronisation: ja<br>
- Bluetooth<br>
> Gerätedaten<br>
- Netz: Triband<br>
- Gewicht: 95 g<br>
- Akkukapazität: 1050 mAh<br>
- Stand-by-Zeit: 270 Std.<br>
- Sprechzeit: 3 Std.<br>
- Maße (HxBxT): 100 x 13 x 58 mm<br>
- Display:  Touchscreen 262.144 Farben , 320 x 240 Pixel<br>
- Speicher im Gerät: 128 MB<br>
- Speicher erweiterbar mit Micro-SD-Karten<br>
- Diktierfunktion<br>
- Kalender<br>
- E-Mail Client<br>
- Freisprechfunktion<br>
- MobileTV</strong></li></li>
<ul>
</ul></ul>
 
Zurück