str_replace tags extern einfuegen

oconner

oconner

Aktives Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
281
Reaktionspunkte
0
Hallo,

ich habe mir bei einem Gästebuch mittels eregi_replace und str_replace eine Art bbcode gebaut. Nun ist das ziemlich viel geworden, so das ich das in einer externen Datei gespeichert habe.

Nun will ich in meiner while Schleife die die Einträge aufruft die Datei mit meinem bbcode includieren aber mit include geht es nicht. Müste das explode heiße oder so? Oder wie muss ich das machen?

ein kleines beispiel wie es im code aussieht waere das hier.

PHP:
while ( $row = mysql_fetch_object ( $query )) 
	{
		include ('bbcode.php');
		echo '<b>'.$row->text.'</b>';

Ich hoffe mir kann jemand helfen.:eek:
 
am besten machst du daraus eine funktion...


datei bbcode.php:

PHP:
function bbcode($str)
{
    str_replace('[b]','<b>',$str);
    ....... und so weiter
}


gästebuch:

PHP:
include('bbcode.php');
echo '<b>'.bbcode($row->text).'</b>';


grüsse

simu
 
ok das probiere ich aus.

Und wenn ich nun auf das .bbcode($row->text). meherere funktionen legen möchte wie muss ich das dann machen?

weil ja auch htmlentities rein muss etc.
 
In die Funktion packst du alles rein, was du derzeit in bbcode.php hast. Also alle wie auch immer gearteten replace-Funktionen.

Matt
 
Benutze in diesem Falle lieber reguläre Ausdrücke, um sicherzustellen, dass alle Tags auch geschlossen wurden.

PHP:
$code = preg_replace( "(\[b\])(.*)(\[/b\])", "<b>\\2</b>", $code );
 
hm...

jetzt bekomme ich ne Fehlermeldung und zwar diese hier

Server schrieb:
Fatal error: Cannot redeclare bbcode() (previously declared in /bbcode.php:17) in /bbcode.php on line 118

meine funktion sieht so aus

PHP:
function bbcode($gb_text)
	{

//hier ist ewig viel str_replace und eregi_replace

}

@scope ja das werde ich noch umschreiben, danke .
 
Wie oft inkludierst du denn bbcode.php?

Matt
 
einmal. ah...

aber ich glaube es ist nicht sinnvoll das schon in der while schleife zu includieren oder?

[aber wie bekomme ich denn sonst das vor de text "$row->text" ]
 
Wenn du es in der while-Schleife inkludierst wird es jedes mal neu eingebunden (außer du machst ein include_once()).

Aber gib mal mehr Code, mit den Bruchstücken kann man nicht wirklich was anfangen. Deine while-Schleife kann auf jeden Fall auf die Funktion zugreifen wenn du sie vorher includest.

Matt
 
also mit include_once werden nun wieder alle beitraege angezeigt und der Fehler kommt auch nicht mehr :) danke.

aber meine bbcode's funktionieren noch nicht.

Hier mal ein beispiel (also ich hab nicht alle bbcodes rein)

PHP:
$gb_text = $row->gb_text;

function bbcode($gb_text)
	{

//smilies_start
$gb_text = str_replace (":bart:", "<img src='images/aiwebs_001' border='0'>", $gb_text);
$gb_text = str_replace (":was:", "<img src='images/aiwebs_002' border='0'>", $gb_text);
$gb_text = str_replace (":(", "<img src='images/aiwebs_003' border='0'>", $gb_text);

}


ausgabe erfolgt so

PHP:
echo '<b>'. bbcode($gb_text).'</b>';

also so ist sie in der while schleife.
 
Es reicht, wenn deine bbcode.php folgendes enthält:

PHP:
function bbcode($gb_text) { 
  //smilies_start 
  $gb_text = str_replace (":bart:", "<img src='images/aiwebs_001' border='0'>", $gb_text); 
  $gb_text = str_replace (":was:", "<img src='images/aiwebs_002' border='0'>", $gb_text); 
  $gb_text = str_replace (":(", "<img src='images/aiwebs_003' border='0'>", $gb_text); 

  return $gb_text;
}

Die Datei, aus der du das aufrufst, sieht dann auszugsweise so aus (deinen ganzen DB-Kram darfst du natürlich nicht vergessen):

PHP:
include(bbcode.php);
[...]
while ($row = mysql_fetch_object($query)) {
  echo '<b>'. bbcode($row->gb_text).'</b>';
}

Matt
 
hab ich genau so gemacht, nur jetzt läd alles nur und es wird nichts angezeigt. Ich habe es auch wieder mich include_once probiert aber es wir trotzdem ewig geladen.
 
Möglicherweise habe ich die Variable, die du übergibst, falsch bezeichnet.

$row->gb_text muss natürlich das Feld aus der Tabelle sein, das deinen Text enthält - wie auch immer das heißt.

Matt
 
nee

das hab ich auch schon überprüft.
 
for schleife ist bei mir keine vorhanden. das Limit ist vorerst nur durch eine MySQL anweisung gesetzt.
 
Zurück
Oben Unten