# HTML in XHTML umwandeln



## eperdemer (24. Juni 2009)

Guten Tag,

ich suche eine Möglichkeit ganz schnell und umkompleziert HTMl Code in XHTML umzuwandeln.

Ich habe dazu ne JavaScipt Variante gefunden die sehr aufwendig ist in PHP umzusetzten.
http://html2xhtml.richarea.com/

Desweiteren habe ich einen PHP Script gefunden, der aber damit nicht klar kommt wenn zu viele Attribute vorhanden sind.
http://forum.contenido.org/viewtopic.php?f=35&t=22893


Ich habe den Script mal etwas übersichtlicher gemacht.


```
<?php
function html2xhtml($str){
  $str = preg_replace ("/(<\/?)(\w+)([^>]*>)/me", "'\\1'.strtolower('\\2').htmlattr2xhtml('\\3')", $str);
  $str = preg_replace ("/(<)(area|base|basefont|br|col|frame|hr|img|input|isindex|link|meta|param)([^>]*?)((?<!\/)>)/m", "\\1\\2\\3 />", $str);
  return $str;
  }

function htmlattr2xhtml($str){
  $str = stripslashes ($str);
  $str = stripslashes (preg_replace ("/(\w+)(\=)([\"|\'])([^\"']+)([\"|\'])(\s)/me", 'strtolower("\1")."=\"\4\" "', $str));
  $str = stripslashes (preg_replace ("/([\s]([\w]+)[\s]+)(?!\=[\"\'])(?=[\/]?[>]|[\w\s]+[\=])/me", ' '.strtolower('\\2').'="'.strtolower('\\2').'"', $str));
  $str = stripslashes (preg_replace ("/([\s]([\w]+)[\s]+)(?!\=[\"\'])(?=[\/]?[>]|[\w\s]+[\=])/me", ' '.strtolower('\\2').'="'.strtolower('\\2').'"', $str));
  return $str;
  }
```

Kann mir da einer weiter Helfen, die Regulären ausdrücke sind leider noch nicht so ganz mein ding.

Vielen Dank für eure Hilfe.


----------



## Gumbo (24. Juni 2009)

Du könntest ganz einfach DOMDocument nutzen, das HTML-Dokument mit DOMDocument->loadHTML() laden und mit DOMDocument->saveXML() als XML speichern.


----------



## eperdemer (24. Juni 2009)

Erstmal danke für deine Schnelle Hilfe und es kommt auch fast das ergebniss was ich brauche. Nur wird bei der Ausgabe auch ein Header geschrieben, den ich dabei nicht brauche.

Das ganze ist für eine CMS gedacht wo bei den Templates für Module, Artikel und Smarty die umwandlung eingebaut werden soll um zu sichern das auch nur XHTML erscheint.


Bsp. Eingabe:

```
<img src="">
```

Bsp. Derzeitige Ausgabe:

```
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><img src=""/></body></html>
```


Bsp. Gewollte Ausgabe:

```
<img src="" />
```


Hier der PHP Code dazu:

```
$str = '<img src="">';

$html2xhtml = new DOMDocument;
$html2xhtml -> loadHTML($str);
echo $html2xhtml -> saveXML();
```


----------

