preg_replace img src im string

hups1803

Erfahrenes Mitglied
Hallo,
ich möchte ein scr innerhalb eines strings austauschen.

es soll aber nur das scr ersetzt werden, welcher image tag die classe modbild hat.

habe erstmal versucht ohne die classe das Bild zu ersetzten und gescheitert.

PHP:
$bild=$rowmodbild['mod_bild'];
$oldtitle=$row3['title'];// hier wird ein ergebniss aus einer datenbank angezeigt z.b (test mit image<br><div class="nailthumb-container"><img src="http://hupsis-e107.de/testdomain/e107_plugins/radio/uploads/thumbcheeeeze.jpg"></div>)
$content = preg_replace('!(?<=src\=\").+(?=\"(\s|\/\>))!',$bild,$oldtitle );

er tauscht es nicht aus weiß da nicht weiter.
 
PHP:
$html = '<br><div class="nailthumb-container"><img src="http://hupsis-e107.de/testdomain/e107_plugins/radio/uploads/thumbcheeeeze.jpg"></div>';
$newSrc = 'new.jpg';

$doc = new DOMDocument();
$doc->loadHTML($html);

// get old src
$oldSrc = $doc->getElementsByTagName('img')->item(0)->getAttribute('src');

//set new src
$srcAttribute = $doc->createAttribute('src');
$srcAttribute->value = $newSrc;
$doc->getElementsByTagName('img')->item(0)->appendChild($srcAttribute);

//optionally (removes doctype)
$doc->removeChild($doc->firstChild);  

echo $doc->saveHTML();
 
danke für die Antwort ,

und was mach ich wenn ich nur das bild zb mit der classe modbild ändern will

Zb wenn der string so aussieht

PHP:
$html = 'Hallo,
ich möchte ein scr innerhalb eines strings austauschen.
es soll aber nur das scr ersetzt werden, welcher image tag die classe modbild hat.
habe erstmal versucht ohne die classe das Bild zu ersetzten und gescheitert.<br><div class="nailthumb-container"><img class="modbild"src="http://hupsis-e107.de/testdomain/e107_plugins/radio/uploads/thumbcheeeeze.jpg"></div><img src="http://hupsis-e107.de/testdomain/e107_plugins/radio/uploads/irgendwas.jpg">';
 
PHP:
<?php

$html = '<br><div class="nailthumb-container"><img class="modbild"src="http://hupsis-e107.de/testdomain/e107_plugins/radio/uploads/thumbcheeeeze.jpg"></div><img src="http://hupsis-e107.de/testdomain/e107_plugins/radio/uploads/irgendwas.jpg">'; 
$newSrc = 'new.jpg'; 

$doc = new DOMDocument(); 
$doc->loadHTML($html);

$finder = new DomXPath($doc);
$classname = "modbild";

$img = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]")->item(0);

//set new src 
$srcAttribute = $doc->createAttribute('src'); 
$srcAttribute->value = $newSrc; 
$img->appendChild($srcAttribute); 

//optionally (removes doctype) 
$doc->removeChild($doc->firstChild);   

echo $doc->saveHTML();
 
cool danke

das scheint nicht ganz zu funktionieren,

ich möchte eine datenbank abrufen und alle einträge des Users mit der userid zb 1 durchsuchen und die image mit der class modbild ersetzten.

PHP:
$mod_bild = $tp->toDB($_POST['mod_bild']);

$sql3 = new db;
$sql3 -> db_Select("radio_meeting_rooms_calendar", "*", "userid='$userid'");
		while($row3 = $sql3-> db_Fetch()){
		$oldtitle=$row3['title'];

$html = $oldtitle;		
$newSrc = $mod_bild; 

$doc = new DOMDocument(); 
$doc->loadHTML($html);

$finder = new DomXPath($doc);
$classname = "modbild";

$img = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]")->item(0);

//set new src 
$srcAttribute = $doc->createAttribute('src'); 
$srcAttribute->value = $newSrc; 
$img->appendChild($srcAttribute); 

//optionally (removes doctype) 
$doc->removeChild($doc->firstChild);   

$content= $doc->saveHTML();		
		
		
//$content = preg_replace('!(?<=src\=\").+(?=\"(\s|\/\>))!',$mod_bild,$oldtitle );
 
 $row_count = $mysql->db_Update("radio_meeting_rooms_calendar", "title='$content' WHERE userid='".$userid."'", FALSE);
 echo $content.'hier';
}

bekomme nix angezeigt

hat sich erledigt danke
 
Zurück