Liebe Mitlesende,
ich möchte den HTML-Quelltext einer Datei zu reinem Text reduzieren, um ihn inhaltlich durchsuchbar zu machen. Dabei entferne ich <img>-Elemente, bei denen ich jedoch ein eventuell gesetztes alt-Attribut (ich kenne das Muss aus der Spec) inhaltlich erhalten will.
Beispiel:
Schau mal: <img src="./dir/file.png" id="f" alt="flying dogs">
Magst Du <img src="./dir/file2.jpg" class="favorites" title="Schoki bis zum Abwinken" />?
Aus obigem Code soll werden:
Schau mal: flying dogs
Magst Du ?
Es soll also der Alt-Text in ein vorausgehendes und ein nachfolgendes Leerzeichen eingebettet als Ersatz für das ganze <img>-Element stehen. Ist kein Alt-Text vorhanden, stehen eben nur die Leerzeichen.
Folgenden PHP-Code habe ich erfolgreich getestet, jedoch kann er fehlende alt-Attribute nicht erkennen:
$entry['text'] = preg_replace(
'~(?is)<img[^>]*?alt="([^"]*)"[^>]*/?>~',
' $1 ',
$tmp['html']
);
Wenn ich das alt-Attribut optional mache (also in runde Klammern mit nachfolgendem Fragezeichen setze), wird der Inhalt nicht mehr als Ersatz notiert - so als würde keiner gefunden:
$entry['text'] = preg_replace(
'~(?is)<img[^>]*?(alt="([^"]*)")?[^>]*/?>~',
' $2 ',
$tmp['html']
);
Bei dem zweiten Code-Beispiel wird zwar das gesamte <img>-Element durch zwei Leerzeichen ersetzt, der Inhalt des alt-Attributs wird aber in keinem Fall eingetragen.
Wer kann mir helfen, dass der Inhalt des alt-Attributs nach der Ersetzung wieder erscheint?
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)