• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

funktion() in echo""; benützen

web673

Neues Mitglied
Huhu,

ich versuche gerade in eine Ausgabe die aus einer Datenbank kommt via str_replace und Arrys einen BBCODE zu erstellen, der eine PHP funktion() verwendet.

Ich bekomme es einfach nicht zum laufen... die php funktion() funktioniert wenn ich es einfach so mache. aber ich möchte das z.b mitten im text machen.

z.b so:

Hier ist ein [anfang]mit der funktion veränderter text[ende]

hier mein derzeitiger code:

PHP:
 //  Mein Design
	$suchArr = array('\"','\"',"\'",'[img]'     ,'[/img]'            ,'[uf]'  ,'[/uf]'   ,'[f]','[/f]','[/','/]','[zitat]','[zitatende]','[aionf]','[aionfende]');  
  $ersetzArr = array('"' ,'"' ,"'" ,'<img src="','" alt="News Bild">','<u><b>','</u></b>','<b>','</b>','[' ,']' ,'<table><tr><td style="border: 3px solid; border-color:#7dabc2; padding: 4px; width: auto;
-moz-border-radius-topleft: 16px; -moz-border-radius-topright: 16px; -moz-border-radius-bottomright: 16px; -moz-border-radius-bottomleft: 16px; font-size: 1em;">','</td></tr></table>','aion("','")');  

$beschreibung = str_replace($suchArr, $ersetzArr, $beschreibung1);  
   
   if (empty($image)) {
	echo '<br><center><h2>| '.$newsheadline.' |</h2></center><p align="left">'.$beschreibung.'</p><br><p align="left" class="datum">- '.$datum.' -</p><br>'; 
		}
else {
	echo '<br><center><h2>| '.$newsheadline.' |</h2></center<br><img src="http://www.html.de/images/upload/'.$image.'" alt="bild"><br><p align="left">'.$beschreibung.'</p><br><p align="left" class="datum">- '.$datum.' -</p><br>';

		}



Grüße
 
Zuletzt bearbeitet:
Werbung:
hi danke für deine antwort.. bekomme da aber genau das selbe ergebnis... hier mal mein code:

PHP:
//$text wird aus der db ausgelesen (weiter oben)

$text = preg_replace("/\[aion\](.*)\[eaion\]/Usi", 'aion("\\1")', $text);

echo '<br><center><h2>| '.$newsheadline.' |</h2></center><p align="left">'.$text.'</p><br><p align="left" class="datum">- '.$datum.' -</p><br>';

dort erhalte ich bei der ausgabe dann trotzdem :

aion("Heute") wurde eine n......

Grüße
 
Zuletzt bearbeitet:
Werbung:
Ich verstehe dein Problem nicht so richtig!

PHP:
//text
$text = 'bla [b]bli[/b] und [u]blub[/u]';

//suchen und erstzen
$search = array('[b]', '[/b]', '[i]', '[/i]', '[u]', '[/u]');
$replace = array('<span style="font-weight:bold;">', '</span>', '<span style="font-family:italic;">', '</span>', '<span style="text-decoration:underline;">', '</span>');
$text = str_replace($search, $replace, $text);

//ausgabe
echo $text;

Ändere deinen ersten Beitrag mal und ersetze die [code ] - Tags durch [php ] und [/php ] <= ohne Leerzeichen
und erklärst dann noch einmal was genau nicht funktioniert!

Was bedeutet:
[...]die php funktion() funktioniert wenn ich es einfach so mache.[...]
Ich sehe da keine Funktion die funktion() heißt!
 
die funktion heißt aion()

diese wird included..(, da sie in einer anderen datei steht) wenn ich im php code echo aion("Das ist ein Test"); schreibe wird sie richtig ausgegben.

wenn ich es jetzt aber über das preg_replace machen möchte gibt es mir immer nur aion("Heute") wurde eine n......
aus.

Das wird wie normaler Text behandelt und nicht wie eine funktion.

Grüße
 
Hmm,

sagen wir du hast folgenden Text:
PHP:
$text = "bla bli blub aion('Heute') wurde eine n....";
(Habe ich das richtig verstanden? Innerhalb des Textes taucht auch die Funktion auf? Und dieser kommt aus der Datenbank?)

Dann solltest du, bevor du den String in die Datenbank schreibst, die Funktion aion() ausführen und nicht nach dem Auslesen!

Wenn die obere Annahme von mir nicht stimmt, poste bitte mal einen Beispielstring wie er aus der Datenbank kommt und wie du diesen String dann verarbeiten möchtest!

Sorry, aber aus dem was oben steht werde ich nicht schlau ;)
 
Werbung:
so habe ich es ja bei der headline gemacht (geht ^^).

ich möchte das aber jetzt im artikel nur an bestimmten stellen machen, deswegen auch den [aion] [eaion] Teil.

Das soll so aussehen:

headline <-hier gehts, nur wenn ich
PHP:
echo aion($headline);
mache

Hi hier ist der [b ]Seiteninhalt[ b] zum [aion]durchlesen[eaion]. Nürlich bin ich platzhaltertext
 
Ich glaube, jetzt verstehe ich dich doch so langsam:
Gegeben wäre z.B. folgender Text:
PHP:
$text = "bla bli blub [aion]Heute[eaion] wurde eine n....";
und "Heute" soll dann an die Funktion aion() übergeben werden nachdem es durch preg_replace ersetzt wurde!

Allerdings wird, wie du bemerken durftest, PHP-Code innerhalb von Strings nicht ausgeführt.

Ich rate dir daher wie gesagt dazu, die Funktion vor dem Eintrag in die Datenbank auszuführen.

Alternativ, aber nicht zu empfehlen, kannst du die Funktion PHP: eval - Manual verwenden! Die Verwendung dieser Funktion ist allerdings alles andere als sauber und mit Performanceeinbußen verbunden!

eval = evil ;)

Gruß
 
hey ^^ danke für eure hilfe.. ich habs jetzt doch hinbekommen OHNE eval() ^^

PHP:
$text = preg_replace("/\[aion\](.*)\[eaion\]/isUe",'aion("\\1")', $text);

durch das /isUe
 
Werbung:
Werbung:
Zurück
Oben