preg_replace aus DB
bugge
- php
Hi,
gibt es eine Art preg-replace, wo man nach einem Muster suchen kann, die Übereinstimmung dann benutz um eine DB-Abfrage zu starten und das Ergebnis dann einsetzt?
Also ich suche zb nach (bild.15):
'/\(bild\.(.*)\]/iU'
Dann frage ich in meiner DB mittels:
$query = mysql_query("SELECT pfad FROM bilder WHERE ID = '$1'");
den Pfad des Bildes ab und möchte als Ergebnis dann einsetzen:
<img src="$row['pfad']">
Finde keinen Ansatz, den ich verfolgen könnte. Mit preg_replace geht es imho nicht. Kann mich aber auch irren.. :-)
Grüße
Hi,
gibt es eine Art preg-replace, wo man nach einem Muster suchen kann, die Übereinstimmung dann benutz um eine DB-Abfrage zu starten und das Ergebnis dann einsetzt?
preg_replace kann eine callback-Funktion aufrufen, bzw. es gibt auch preg_replace_callback.
Also ich suche zb nach (bild.15):
'/\(bild\.(.*)\]/iU'
Dann frage ich in meiner DB mittels:
$query = mysql_query("SELECT pfad FROM bilder WHERE ID = '$1'");
den Pfad des Bildes ab und möchte als Ergebnis dann einsetzen:
<img src="$row['pfad']">
Finde keinen Ansatz, den ich verfolgen könnte.
Dass das nicht sonderlich performant wird bei mehreren Suchtreffern, sollte klar sein.
MfG ChrisB
Dass das nicht sonderlich performant wird bei mehreren Suchtreffern, sollte klar sein.
Wie wird es denn performant? Ich suche ja nach einem Ansatz, der nicht mit preg_replace(_callback) funktioniert sondern schneller arbeitet.
Wie wird es denn performant? Ich suche ja nach einem Ansatz, der nicht mit preg_replace(_callback) funktioniert sondern schneller arbeitet.
eventuell ein array images[$id]=$pfad;
aufbauen und dann in der callback-Funktion per return images[$id];
ersetzen.
Hi,
Dass das nicht sonderlich performant wird bei mehreren Suchtreffern, sollte klar sein.
Wie wird es denn performant?
In dem du das Konzept überarbeitest.
Ich suche ja nach einem Ansatz, der nicht mit preg_replace(_callback) funktioniert sondern schneller arbeitet.
Dann überlege dir, ob du überhaupt reguläre Ausdrücke dazu verwenden willst.
Und wenn ja, überlege dir, wie du erst mal die nötigen Daten mit *einer* Query ermitteln kannst. Datenbank-Queries in Schleifen sind pauschal nie eine gute Idee; und Suchen-Ersetzen mit mehreren Treffern und jeweils einzelne Behandlung dieser entspricht dann ja auch einer impliziten Schleife.
MfG ChrisB