Frage zu str_replace in Verbindung mit einem Array

Hi :bp:,

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 sollte direkt im SQL-Code gehen, hab mal was von einer eingebauten Replace-Funktion gehört. Kann aber auch sein, dass das PgSQL war…

hi,

das geht ganz einfach, hab ich ja auch schon mal gebraucht :wink:

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 :wink:

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…

mfg Joey

Das war nicht das, wonach er gesucht hatte :wink:

So, hab die Funktion gefunden: dev.mysql.com/doc/refman/5.1/de/ … #id1897280
Sollte so möglich sein:

das sollte den Verarbeiteten String zurückgeben, kann mich aber auch irren :wink:

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.

Danke michi7x7 und natürlich auch bcg, hat mir sehr geholfen, ich probier gleich mal die Scripts aus und schau welches besser passt :wink2:

Wenn meines Funktioniert, ist es definitiv schneller :wink: (und einfacher zu verwenden)

hm ja, die Lösung würde ich gerne sehen.

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. smile)

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…

wie sähe sowas denn aus?

mfg Balmung

Ich hab die Lösung von bcg genommen, da ich keine 132+ einträge in mein sqlquery schreiben will =) isn bisschen umständlich :slight_smile: Danke nochmals für eure tipps, ich habs jetzt auch nicht mit ereg sonder mit str replace gemacht funktioniert wunderbar =)

Fuer etwas, das keine Mustersuche erfordert, regulaere Ausdruecke zu nutzen, ist grober Unfug.

Und es ist ja nicht so, als ob str_replace nicht ebenfalls Arrays als ersten und zweiten Parameter akzeptieren wuerde …

hmm, da muss ich dir recht geben, aber wenn man damit auch BBCodes platzieren möchte eignet sich das ganze dann eben schon :wink:

[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

mfg Joey

Und wieder was dazugelernt =) ist auf jedenfall eine riesen erleichterung das mit dem bbcode so zu machen =)