PHP pre_replace außer zwischen a und img?

lordfritte

Lieutenant
Registriert
Juli 2006
Beiträge
1.008
Hallo, ich möchte keywords highlighten.
Dazu verwende ich diesen stück code:

PHP:
foreach ($keywords as $keyword) {
    		$content = preg_replace("%(?!<a|img)\b(".$keyword.")\b(?!<\/a|img>)%i", "<span class='keyword'>".$keyword."</span>", $content);
    	}

Nur leider werden zwischen a und img tags die keywords auch ersetzt..
 
Zeig mal ein $content Auszug.
 
Hier ein Beispiel:
<table><tr>
<td valign='top'>
<a href='http://www.karstadt.de/p/?pid=4084476&un=1&bst=520&abt=0&pt=99&lc=1&ln=1&custom=4084476' target="_blank"><img src='http://lh4.googleusercontent.com/public/fqkn78fjuQ-hPsphZIpRC19J5GEKNY86OG1kPtAEshDvWemHyzIXr_3I5nFATxNW3glfnCKE00zwiA' border='0' /></a>
<br/><br/>SCORE: 1 &nbsp; &nbsp; <a href='http://www.karstadt.de/p/?pid=4084476&un=1&bst=520&abt=0&pt=99&lc=1&ln=1&custom=4084476' target="_blank">Offer Link</a>
<td valign='top' width='700' >
<table>
<tr><td class='tt'>TITLE:</td><td><b> Erazer® Notebook X6817 - Intel® Core i7-2670QM - 640 GB - 4 GB DDR3 </b></td></tr>
<tr><td class='tt' >SOURCE:</td><td> Google</td></tr>
<tr><td class='tt'>PROGRAMID:</td><td> </td></tr>
<tr><td class='tt'>AUTHOR:</td><td> Karstadt</td></tr>
<tr><td class='tt'>CATEGORY:</td><td> </td></tr>
<tr><td class='tt'>PRICE:</td><td> Google Price 699</td></tr>
<tr><td class='tt'>BRAND:</td><td> MEDION®</td></tr>
<tr><td class='tt'>GTIN:</td><td> </td></tr>
<tr><td class='tt'>PRODUCTNR:</td><td> </td></tr>
<tr><td class='tt'>SHIPPING:</td><td> 4.95</td></tr>
<tr><td class='tt'>DESCRIPTION:</td><td> Display: 39,6 cm/15,6" Widescreen LED-Backlight Displaymit einer HD Auflösung von 1366 x 768 PixelProdukttyp: 15"Prozessor: Core I7Speicher: 4 GB DDR3Produktart: NotebookLieferumfang: MEDION® ERAZER® Notebook, 9-Zellen Li-Ionen Hochleistungsakku, externes Netzteil, Garantiekarte, Bedienungsanleitung, Windows® 7 Home Premium Recovery DVD, MEDION® Application und Support DiscExpertensuche - Prozessor: Intel Core i7Anschlüsse: - Multikartenleser für SD, SDHC, MMC, MS, MS-Pro Speicherkarten- 1x eSATA- 2x USB 3.0- 2x USB 2.0- 1x HDMI- 1x VGA- 1x LAN (RJ45)- 1x Mikrofon- 1x Line in- 1x Line out inkl. S/PDIF- 8-Kanal Audio outExpertensuche - Grafikkarte: NVIDIAAusführung: 38,1 - 40,6 cm (15" - 16")Maße: ca. 395 x 268 x 56 mm (BxTxH)Technische Details: - Intel® Core i7-2670QM Prozessor - USB 3.0 - NVIDIA® GeForce® GTX560M- 640 GB Festplatte- 4 GB Arbeitsspeicher- Multi-Standard DVD-/CD-BrennerGewicht: ca. 3.500 g inkl. AkkuExpertensuche - Bildschirmgröße: 38,10 - 40,63 cm ( ab 15" )Grafikkarte: NVIDIA® GeForce® GTX560MProzessortyp: 2670QM (2,2 GHz)Garantie: 24 Monate GarantieFestplatte: 640 GBGrafikspeicher: 1536 MBArbeitsspeicher: 4 GB DDR3Besonderheiten: 80 GB SSD</td></tr>
</table>
 
Hab hier grad keine Möglichkeit zum testen. Evtl. a|img in klammern setzen --> %(?!<(a|img))\b(".$keyword.")\b(?!<\/(a|img)>)%i
 
Habs selbst noch nicht probiert, weil ich es bisher nicht gebraucht habe, die Lösung von Marco Goncalves ist aber schon eine Weile in meinen Bookmarks gespeichert.
 
@sasdensas geht leider auch nicht
@Karol_ Damit funktioniert es, danke
 
Zurück
Oben