Bernhard Mecl: Bookmarks aus File mit PHP auslesen & in MySQL Tabelle schreiben

Beitrag lesen

<folder folded="no" >

Der tag wird nicht geschlossen (eventuell nur im posting vergessen).

function characterData($parser, $data) {
  global $data;

Hier gibts gröbere Benamsungskonflikte, die zu komplexen Fehlern führen.

function endElement($parser, $name) {
[...]
      print $titel;

$titel ist hier nicht definiert.

Mein simpler Vorschlag wäre der folgende (angelehnt an http://www.webmasterbase.com/article/560:

$in_bookmark=false;

function startElement($parser,$name,$attrs) {
  global $in_bookmark,$tag,$result;
  if ($in_bookmark) {
    $tag=$name;
  } elseif($name=='BOOKMARK') {
    $in_bookmark=true;
    $result['icon']=trim($attrs['ICON']);
    $result['href']=trim($attrs['HREF']);
  }
}

function endElement($parser,$name) {
  global $in_bookmark,$result;
  if($name=='BOOKMARK') {
    $in_bookmark=false;
    print_r($result);
    // $result=array();
  }
}

function characterData($parser,$data) {
  global $in_bookmark,$tag,$result;
  if($in_bookmark) {
    switch($tag) {
      case 'TITLE':
        $data=trim($data);
        if(!empty($data)) {
          $result['title']=$data;
        }
      // break;
    }
  }
}

Abgesehen davon würde ich an Deiner Stelle überlegen, die Daten folgendermaßen abzulegen oder mich eventuell sogar in RDF (http://www.w3.org/RDF/) einzulesen:

<bookmark>
  <icon>www</icon>
  <link>http://www.blablabla.de/</link>
  <title>Willkommen bei blablabla</title>
</bookmark>