Bild in Text einfügen

Robert Steichele

Erfahrenes Mitglied
Ich möchte beim speichern von Text (News) in einer Datenbank auch die Möglichkeit haben Bilder einzufügen, die bei der Ausgabe im Text angezeigt werden.
Die Bilder selbst sollen nicht auf dem Server liegen sondern nur mit ihrer URL angegeben werden.
Gibt es da eine gängige Lösung?

Man könnte doch z.B. die URL in zwei eindeutige Blöcke einschliessen wie in einigen Foren (z.B.
beispiel.jpg
) und dies bei der Ausgabe per Funktion durch das entsprechende <img src... Tag ersetzen.

Gibt es in PHP die Möglichkeit genau solche komplette Blöcke (von [img] bis [/img] aus dem Text zu extrahieren, dann die img-Blöcke zu entfernen, den Rest (die URL) durch den entsprechenden HTML-Befehl zu ersetzen und wieder einzufügen?

Denke ich da zu kompliziert? Gibt es evtl. eine einfachere Lösung?

Gruß
Robert
 
Hier mal die Funktion die ich nutze um Pseudo-Tags in richtige Tags umzuwandeln.
Fuer Bilder ist da jetzt nichts dabei, aber anhand des Codes solltest Du eigentlich in der Lage sein die IMG-Tags hinzuzufuegen.
PHP:
function replacetags($messagetext)
{
	while ((strpos($messagetext,"[url=")>-1) && (strpos($messagetext,"[ /url ]")>-1))
		{
			$startpos=strpos($messagetext,"[url=")+5;
			$endpos=strpos($messagetext,"]",$startpos);
			$url=substr($messagetext,$startpos,$endpos-$startpos);
			$startpos=$endpos+1;
			$endpos=strpos($messagetext,"[ /url ]",$startpos);
			$urltext=substr($messagetext,$startpos,$endpos-$startpos);
			$codestring='[url='.$url.']'.$urltext.'[ /url ]';
			$urlstring='<a href="'.$url.'" target="_blank">'.$urltext.'</a>';
			$messagetext=str_replace($codestring,$urlstring,$messagetext);
		}
	while ((strpos($messagetext,"[color=")>-1) && (strpos($messagetext,"[ /color ]")>-1))
		{
			$startpos=strpos($messagetext,"[color=")+7;
			$endpos=strpos($messagetext,"]",$startpos);
			$color=substr($messagetext,$startpos,$endpos-$startpos);
			$startpos=$endpos+1;
			$endpos=strpos($messagetext,"[ /color ]",$startpos);
			$colortext=substr($messagetext,$startpos,$endpos-$startpos);
			$codestring='[color='.$color.']'.$colortext.'[ /color ]';
			$colorstring='<font color="'.$color.'">'.$colortext.'</font>';
			$messagetext=str_replace($codestring,$colorstring,$messagetext);
		}
	while ((strpos($messagetext,"[ b ]")>-1) && (strpos($messagetext,"[ /b ]")>-1))
		{
			$startpos=strpos($messagetext,"[ b ]")+3;
			$endpos=strpos($messagetext,"[ /b ]",$startpos);
			$text=substr($messagetext,$startpos,$endpos-$startpos);
			$codestring='[ b ]'.$text.'[ /b ]';
			$formatstring='<b>'.$text.'</b>';
			$messagetext=str_replace($codestring,$formatstring,$messagetext);
		}
	while ((strpos($messagetext,"[ i ]")>-1) && (strpos($messagetext,"[ /i ]")>-1))
		{
			$startpos=strpos($messagetext,"[ i ]")+3;
			$endpos=strpos($messagetext,"[ /i ]",$startpos);
			$text=substr($messagetext,$startpos,$endpos-$startpos);
			$codestring='[ i ]'.$text.'[ /i ]';
			$urlstring='<i>'.$text.'</i>';
			$messagetext=str_replace($codestring,$urlstring,$messagetext);
		}
	while ((strpos($messagetext,"[ u ]")>-1) && (strpos($messagetext,"[ /u ]")>-1))
		{
			$startpos=strpos($messagetext,"[ u ]")+3;
			$endpos=strpos($messagetext,"[ /u ]",$startpos);
			$text=substr($messagetext,$startpos,$endpos-$startpos);
			$codestring='[ u ]'.$text.'[ /u ]';
			$formatstring='<u>'.$text.'</u>';
			$messagetext=str_replace($codestring,$formatstring,$messagetext);
		}
	while ((strpos($messagetext,"[ s ]")>-1) && (strpos($messagetext,"[ /s ]")>-1))
		{
			$startpos=strpos($messagetext,"[ s ]")+3;
			$endpos=strpos($messagetext,"[ /s ]",$startpos);
			$text=substr($messagetext,$startpos,$endpos-$startpos);
			$codestring='[ s ]'.$text.'[ /s ]';
			$formatstring='<s>'.$text.'</s>';
			$messagetext=str_replace($codestring,$formatstring,$messagetext);
		}
	return $messagetext;
}
 
Zurück