str_replace tags extern einfuegen

oconner

oconner

Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
281
Punkte Reaktionen
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:
 
simusch

simusch

Aktives Mitglied
Dabei seit
27.09.2004
Beiträge
2.029
Punkte Reaktionen
218
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
 
oconner

oconner

Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
281
Punkte Reaktionen
0
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.
 
msslovi0

msslovi0

Aktives Mitglied
Dabei seit
20.03.2005
Beiträge
2.726
Punkte Reaktionen
117
In die Funktion packst du alles rein, was du derzeit in bbcode.php hast. Also alle wie auch immer gearteten replace-Funktionen.

Matt
 
scope

scope

Aktives Mitglied
Dabei seit
24.01.2005
Beiträge
4.123
Punkte Reaktionen
305
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 );
 
oconner

oconner

Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
281
Punkte Reaktionen
0
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 .
 
msslovi0

msslovi0

Aktives Mitglied
Dabei seit
20.03.2005
Beiträge
2.726
Punkte Reaktionen
117
Wie oft inkludierst du denn bbcode.php?

Matt
 
oconner

oconner

Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
281
Punkte Reaktionen
0
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" ]
 
msslovi0

msslovi0

Aktives Mitglied
Dabei seit
20.03.2005
Beiträge
2.726
Punkte Reaktionen
117
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
 
oconner

oconner

Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
281
Punkte Reaktionen
0
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.
 
msslovi0

msslovi0

Aktives Mitglied
Dabei seit
20.03.2005
Beiträge
2.726
Punkte Reaktionen
117
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
 
oconner

oconner

Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
281
Punkte Reaktionen
0
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.
 
msslovi0

msslovi0

Aktives Mitglied
Dabei seit
20.03.2005
Beiträge
2.726
Punkte Reaktionen
117
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
 
oconner

oconner

Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
281
Punkte Reaktionen
0
nee

das hab ich auch schon überprüft.
 
oconner

oconner

Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
281
Punkte Reaktionen
0
for schleife ist bei mir keine vorhanden. das Limit ist vorerst nur durch eine MySQL anweisung gesetzt.
 
Oben