ich muss mich mal wieder mit einer Frage vertrauensvoll an euch richten, ich hab in einer Datenbank mehrere Hundert BBCodes stehen die vom Aufbau recht unterschiedlich sind
die Datenbank soll nu auch noch regelmäßig erweitert werden, deshalb wär es weniger sinnvoll mehre Hundert
$xyz = str_replace('xyz','zyx',$xyz);
zu schreiben. Das muss man doch auch mit einer Kombination aus SQL-Abfrage + Array + str_replace (oder ähnliches) hinbekommen. Weis leider nicht wie und hab Googletechnisch nicht die passenden Suchbegriffe am Start…
das geht ganz einfach, hab ich ja auch schon mal gebraucht
also, die SQLabfrage solltest du hinbekommen, dann übernimmst du z.B. so alle Smileys in ein Array:
$from = array();
$to = array();
$i = 0;
while($smileRow = mysql_fetch_object($query)) {
$from[$i] = "/". $smileRow->from. "/si";
$to[$i] = $smileRow->to;
$i++;
}
Dann muss das ganze ja noch ersetzt werden:
$nachher = perg_replace($from, $to, $vorher);Da ist ja fast klar, wie es funktioneiert, genau wie str_replace, nur, dass das ganze auch mit array funktioniert
Falls du BBCodes wie “text” => “text” benötigst, schreibst du einfach in die Daten bank:
unter “from” => "[b](.*?)[/b]"
und unter “to” => “\1”;
Achja, du müsstest dann einfach sonderzeichen mit men Backslash maskieren, also auch einfahe, wie [{,/ etc…
hmm… biste dir da so sicher?
So wie ich das verstanden habe möchte amityville nicht dass die ganzen bbcodes/smileys in php hard-gecodet sind, sondern dass sie mithilfe von SQL erweiterbar sind.
In dem Fall ist bcg’s Code durchaus nutzbar.
man hat eine Tabelle smileys
in dieser gibt es nur zwei Spalten search und replace
jeder Datensatz enthält in search einen typsichen Smiley und im Feld replace dann ein entsprechendes img-Tag (z.B. )
In der Tabelle forum_posts gibt es eine Spalte mit dem Namen textdata in dem dann die Texte einzelner Beiträge eines fiktiven Forums enthalten sind.
Nun möchte man sämtliche Beiträge aus der Tabelle forum_posts auslesen, und zwar so, dass bereits vom mysqld die smileys mit den einzelnen img-tags ausgetauscht werden…
Ich hab die Lösung von bcg genommen, da ich keine 132+ einträge in mein sqlquery schreiben will =) isn bisschen umständlich Danke nochmals für eure tipps, ich habs jetzt auch nicht mit ereg sonder mit str replace gemacht funktioniert wunderbar =)
hmm, da muss ich dir recht geben, aber wenn man damit auch BBCodes platzieren möchte eignet sich das ganze dann eben schon
[quote]Und es ist ja nicht so, als ob str_replace nicht ebenfalls Arrays als ersten und zweiten Parameter akzeptieren wuerde …[/quote]Aber das hab ich nochnet gewusst xD