<img src="***" />

Zack

cookies vader
Hallo,
ich lese aus einer Datenbank inhalt für meine Seite aus. Um dem XHTML-Standart zu entsprechen muss ich auch <img src="bildlink" alt="alternatvitext"> <img src="bildlink" alt="alternatvitext" /> machen.

Das verusche ich mit:
PHP:
$content['content'] = preg_replace('<img src="(.*?)\">', '<img src="(.*?)\" />', $content['content']);


Aber wie immer treibt mich diese Funktion zum Wahnsin....

Danke im Vorraus Ra7or
 
Anderes Pattern:

<img src="([^>.]*)

.* = alle zeichen
[^>.]* = alle zeichen bis zum nächsten >

und dann gibst du ${1} an in dem replace-string weil preg_replace dadrin das speichert was du suchst und nicht nochmals (.*?) ;)

EDIT: Eigentlich seh ich grad im RegExp Coach das dein Pattern richtig ist ;) Sorry
 
Zuletzt bearbeitet:
Anderes Pattern:

<img src="([^>.]*)

deins geht bis hinten zum letzten " durch in der ganzen zeile.
wenn also hinter dem img noch ein <q cite="ZodiacXP"> ist geht dein pattern bis zu dessen ">

.* = alle zeichen
[^>.]* = alle zeichen bis zum nächsten >

und dann gibst du ${1} an in dem replace-string weil preg_replace dadrin das speichert was du suchst und nicht nochmals (.*?) ;)

PHP:
$content['content'] = preg_replace('<img src="([^".]*)">', '<img src="([^".]*)" />', $content['content']);

Ergebnis:
HTML:
<img src="images/logo.jpg" alt="Logo">

Das stimmt schon. Aber irgendwo ist noch ein Fehler.
 
Bin grad erst wachgeworden. Nochmals, du musst beim Replace-String (der zweite im preg_*) ${1} verwenden, statt den Pattern nochmal.
Zudem hast du die Delimiter vergessen. Soll heißen, vor und nach deinem Pattern immer ein / oder eins von diesen: & ! = ~ @ #

Hier ausm RegExp-Evaluator:

PHP:
  //
  // Der Reguläre Ausdruck
  //
  $pattern = '/<img src=([^>.]*)>/is';
  //
  // Ersatzstring
  //
  $replace = '<img src=${1} />';
  //
  // RegExp auswerten, Ersetzung durchführen
  //
  $result = preg_replace($pattern, $replace, $subject);

http://regexp-evaluator.de/evaluator/be9b05fd5d22334b374b988c5a79d54b/#ergebnis
 
Zuletzt bearbeitet:
kann es daran liegen das der img tag in nem kompletten string steht?
also wenn ich das jetzt mal ganz einfach mit copy&paste mache:
PHP:
	  $subject = $content['content'];
	  //
	  // Der Reguläre Ausdruck
	  //
	  $pattern = '/<img src=([^>.]*)>/is';
	  //
	  // Ersatzstring
	  //
	  $replace = '<img src=${1} />';
	  //
	  // RegExp auswerten, Ersetzung durchführen
	  //
	  $result = preg_replace($pattern, $replace, $subject);
	  //
	  // Ergebnis ausgeben
	  //
	  echo '<p>Ergebnis: '.htmlspecialchars($result).'</p>';

Ergebnis: <div class="center"><h1>Seite im Aufbau</h1><br /><img src="http://www.tutorials.de/forum/images/logo.jpg" alt="Logo"><br />Diese Seite befindet sich zur Zeit noch im Aufbau.</div>

Edit. Es liegt am Punkt (.jpg)
 
Zuletzt bearbeitet:
Ah Ok. Dadran hab ich auch nicht gedacht.

dann das Pattern:

/<img src=([^>]*)>/is

schwere Geburt. Erstmal frühstücken und mittag essen
 
Zurück