eregi_replace funktioniert nur einmal

Sleepdog

Grünschnabel
Hi,

ich habe ein kleines Problem mit der Funktion eregi_replace, ich habe einen Text in dem mein gesuchtes Wort mehrmals drin ist, aber immer nur das erste wird geändert alle anderen bleiben gleich.

Hier mein Code bsp.

PHP:
function ChangeImgUrl($entry) {
	$entry = eregi_replace("src=\"([^\[]+)", "src=/css/\\1", $entry);
	return $entry;
	}

PHP:
function readdb($news) {
	$ergebnis = mysql_query("SELECT * FROM news ORDER BY date DESC LIMIT 10");
		while ($row = mysql_fetch_object($ergebnis))
			{
			$row->text = ChangeImgUrl($row->text);
			echo nl2br("<li>
				<h3>$row->title</h3>
					<div class=acc-section>
						<div class=acc-content>
							<p>$row->text</p>
						</div>
					</div>
			</li>");
	}
}

Zur Erklärung wieso ich das machen muss, ich schreibe für eine Firma eine kleine Seite die auf die bereits vorhanden DB zugreift und sich die news zieht, in der Datenbank gibt es das Feld "text" in diesem ist die News als html code hinterlegt, sprich auch die Links für die Bilder stehen dort fest drin. Nun habe ich mein Projekt nicht in dem cms Ordner sondern eine Ebene höher, um die Bilder aber auch auf meiner Seite zu sehen will ich einfach nur den src verweis ändern.

Danke für eure Hilfe!
Gruß
 
Versuche mit [phpf]preg_replace[/phpf] zu arbeiten, denn eregi_replace ist bereits veraltet!
Müsste eigentlich analog funktionieren.
 
Gibt doch mal so ein $row->text Eintrag aus der DB der mehrfach den Pattern enthält. Dann können wir ein wenig testen.
Ansonsten begreife ich dein Pattern nicht ganz.
src=\"([^\[]+)
Also, den String 'src="' gefolgt von mindestens einem Zeichen das nicht [ ist.

Also hast du solche Strings?
Hallo Welt src="abc[ und src="def[
 
PHP:
function ChangeImgUrl($entry) {
    $entry = preg_replace("src=\"([^\[]+)", "src=/css/\\1", $entry);
    return $entry;
    }

Ich habe einfach nur eregi_replace mit preg_replace ausgetauscht.

@yaslaw
In der Datenbank steht mein Text als HTML Code in der Spalte text.

In dem HTML Code sind auch Bilder vorhanden <img src="/images/bild.jpg">. Den Aufbau müsst ihr euch wie folgt vorstellen:


root
|-Mein Projekt
|-cms
|--images

Um nun von Meinem Projekt in den Image ordner zu kommen muss ich den relativen pfad der aus der DB ausgelesen wurde veränder, sprich ich lasse den text durchsuchen und ergänze den relativen pfad um /cms/. Das Funktioniert ja auch soweit einwandfrei aber nur einmal pro Text/Zelle....
 
preg_replace braucht Delemiter am Anfang und am Ende, danech ggf Paramters. Noralerweise nimmt man / als Delemiter des Patterns.
Hab auch dein Pattern ein wenig vereinfacht
PHP:
$pattern = '/src=\"([^"]+)"/is';
  //
  // Ersatzstring
  //
  $replace = 'src="/css\1"';
  //
  // RegExp auswerten, Ersetzung durchführen
  //
  $result = preg_replace($pattern, $replace, $subject);

PS: Hier mein Test
http://regexp-evaluator.de/evaluator/37a014899ae50b01fe944e83ed378f77/#ergebnis
 
Zurück