25.13 id3 

Version: 0.2 | Lizenz: PHP-Lizenz 3.0 |
id3 ist sozusagen PECLs Gegenstück zu PEARs MP3_Id. Es handelt sich also um eine Erweiterung, die es Ihnen ermöglicht, ID3-Tags aus MP3-Dateien auszulesen und diese zu verändern. Informationen zu ID3-Tags entnehmen Sie bitte Abschnitt 5.3 über PEAR::MP3_Id.
id3 ist zu PHP 5 kompatibel und ist dadurch, dass die Erweiterung in C geschrieben ist, natürlich deutlich schneller als die PEAR-Variante.
Möchten Sie einfach nur die ID3-Daten auslesen, ist die Funktion id3_get_tag() hilfreich. Sie bekommt, wie die anderen dateibezogenen Funktionen auch, den Namen der MP3-Datei als Parameter übergeben. Die Funktion ermittelt die Daten, die in der Datei enthalten sind, und gibt diese als assoziatives Array zurück. Die Funktion liefert nur die Tags zurück, die in der Datei auch vorhanden sind, wobei die ID3-Versionen 1.0, 1.1 und 2.2 und nachfolgende unterstützt werden. Welche Tags möglich sind, finden Sie im Kapitel 5.3 Kann die Funktion keine Daten ermitteln, liefert sie ein leeres Array zurück.
Der Name des Tags fungiert als Array-Schlüssel, und der Wert wird direkt übernommen. Da das Tag genre nur die Nummer des Genres, nicht aber den eigentlichen Namen enthält, können Sie die Klartextdarstellung des Genres mit der Funktion id3_get_genre_name() auslesen, die die Nummer des Genres übergeben bekommt. Eine komplette Liste aller Genres stellt die Funktion id3_get_genre_list() zur Verfügung. Um die ID3-Informationen einer Datei auszulesen, könnten Sie einen Code wie den aus Listing 25.16 nutzen.
dl('id3.so'); $file = 'kopf.mp3'; $daten = id3_get_tag($file); if (0 === count ($daten)) { echo 'Es konnten keine Daten ermittelt werden'; } else { echo '<table>'; foreach ($daten as $tag => $value) { echo "<tr><td>$tag</td> <td>$value</td></tr>"; if ('genre' == $tag) { $value=preg_replace("/\((\d+)\)/",'\1',$value); echo '<tr><td>Name des Genres</td> <td>'.id3_get_genre_name($value).'</td>'; } } echo '</table>'; }
Listing 25.16 Lesen von ID3-Daten mit id3
Bitte wundern Sie sich nicht über den regulären Ausdruck bei der Ausgabe des Genre-Namens. Dieser ist notwendig, da die Nummer in einigen Fällen mit Klammern zurückgegeben wird, die mit diesem Ausdruck entfernt werden. Wie die Ausgabe des Scripts aussehen kann, sehen Sie in Abbildung 25.4.
Abbildung 25.4 Daten aus einer MP3-Datei
Welche Version des ID3-Standards genutzt wird, können Sie mit id3_get_version() auslesen. Auch diese Funktion bekommt den Dateinamen als Parameter übergeben.
Um die Tags einer bestehenden Datei zu verändern, können Sie id3_set_tag() nutzen. Die Funktion bekommt den Dateinamen sowie ein Array übergeben und schreibt die Daten direkt in die Datei. In diesem Array nutzen Sie die Namen der Tags, die geändert werden sollen, als Schlüssel. Der Wert wird jeweils direkt übernommen. Der dritte Parameter ist die Version der ID3-Information. Ist schon ein ID3-Tag vorhanden, nutzen Sie am besten die Information, die id3_get_version() Ihnen liefert. Ist noch kein Tag vorhanden, können Sie eine Version vorgeben. Hierzu kennt das Paket die Konstanten ID3_V1_0, ID3_V1_1, ID3_V2_1, ID3_V2_2, ID3_V2_3 und ID3_V2_4.