wahsaga: Pattern Syntax für preg_replace

Beitrag lesen

hi,

$str=preg_replace('~(?is)<img [^>]src=(["'])[^"']+thumb.php5?image_id=(\d+)(\1)[^>]>~',
   '<a title="Klicke auf das Bild um das nächste anzuzeigen." rel="lightbox[set]" href="'.ROOT_PATH.'view/medium.php5?image_id=$2"><img title="klick mich an!" src="'.ROOT_PATH.'view/thumb.php5?image_id=$2"></a>', $str);


>   
> Das preg\_replace ignoriert aber alle Attribute außer src. Dh es gehen die Attribute width, height, align und alt verloren.  
> Wie muss ich das preg\_replace erweitern, dass diese erhalten bleiben?  
  
Back-References bekommst du nur für das, wo du runden Klammern drumherum setzt.  
[^>]\* mag zwar nach dem src="..." die restlichen Attribute erfassen - aber sie werden nicht "aufbewahrt", sind also futsch, können also auch beim Ersetzen nicht wieder eingefügt werden - ganz abgesehen davon, dass du das auch nicht mal versucht hast: Du ersetzt durch den Link mit title-, rel- und href-Attribut, sowie das darin liegende Bild mit title- und src-Attribut. Wenn die anderen Attribute erhalten bleiben sollten, müssten sie ja dort irgendwo wieder eingesetzt werden.  
  
Also:  
- besorge dir auch für den "Rest" eine Back-Reference  
- füge diese im "Eränzungsstring" auch irgendwo sinnvoll ein  
  
  
gruß,  
wahsaga  
  

-- 
/voodoo.css:  
#GeorgeWBush { position:absolute; bottom:-6ft; }