Hi
Ich habe mal wieder ein kleines Problem, und hoffe ihr könnt mir weiterhelfen.
Da ich teilwörter bestimmt formatieren möchte und in die Datenbank schreiben möchte, verwende ich preg_replace mit einer funktion beim ersetzen. Das ganze sieht dann so aus:
Nun habe ich folgende zwei probleme, und hoffe ihr könnt mir da weiterhelfen:
1. Er nimmt mit die Werte aus dem Suchmuster nicht mit. Wenn ich beim ersetzen einfach '\\1' mache, ersetzt er mir logischerweise den text mit dem ausgabewert. In der Funktion übergibt er jedoch \\1 statt dem Inhalt. Wie kann ich das ändern?
2. Kann ich dies irgendwie der reihe nach ablaufen lassen? Ich möchte wie gesagt die Werte in die Datenbank schreiben, und dort dann die ID ausgeben. Also so würde dies dann ungefähr aussehen:
Abgesehen davon, dass ich bei text 1 - 3 nicht den richtigen wert habe, funktioneirt es fast. Mein Problem ist, dass er nur einen Datenbankeintrag erstellt und somit auch immer nur diese eine ID ausgibt. Also wenn er im Text 5 einträge ersetzen muss fügt er nur einen in die Datenbank.
Wie könnt ich mein Problem lösen?
Habe mir auch überlegt mit preg_match_all zu arbeiten. Dies würde soweit auch gehen, bis auf dass das ich das Problem habe das ich nicht weiss wie ich dann '[meineID]'.mysql_insert_id().'[/meineID]' mit dem Teil im ganzen Text ersetzen lassen könnte. Mit str_replace würde es gehen. Jedoch ist hier das problem wenn es selbe Einträge gibt. also wenn wir im Text 5 mal "Hund" haben, kann ich ja nicht einfach ein str_replace machen da ich sonst bei jedem "Hund" nur "[meineID]1[/meineID]" hätte statt bei jedem hund die ID die er generiert hat in der Funktion für dieses Wort.
Danke schonmal für eure Hilfe.
Gruss
Olli
Ich habe mal wieder ein kleines Problem, und hoffe ihr könnt mir weiterhelfen.
Da ich teilwörter bestimmt formatieren möchte und in die Datenbank schreiben möchte, verwende ich preg_replace mit einer funktion beim ersetzen. Das ganze sieht dann so aus:
PHP-Code:
$ersetzung = $this->mfct('\\1', '\\2', '\\3');
$this->text = preg_replace($suchmuster, $ersetzung, $this->text);
1. Er nimmt mit die Werte aus dem Suchmuster nicht mit. Wenn ich beim ersetzen einfach '\\1' mache, ersetzt er mir logischerweise den text mit dem ausgabewert. In der Funktion übergibt er jedoch \\1 statt dem Inhalt. Wie kann ich das ändern?
2. Kann ich dies irgendwie der reihe nach ablaufen lassen? Ich möchte wie gesagt die Werte in die Datenbank schreiben, und dort dann die ID ausgeben. Also so würde dies dann ungefähr aussehen:
PHP-Code:
function mfct($text1, $text2, $text3) {
//Hier kommt das Insert für die Datenbank.
return '[meineID]'.mysql_insert_id().'[/meineID]';
}
Wie könnt ich mein Problem lösen?
Habe mir auch überlegt mit preg_match_all zu arbeiten. Dies würde soweit auch gehen, bis auf dass das ich das Problem habe das ich nicht weiss wie ich dann '[meineID]'.mysql_insert_id().'[/meineID]' mit dem Teil im ganzen Text ersetzen lassen könnte. Mit str_replace würde es gehen. Jedoch ist hier das problem wenn es selbe Einträge gibt. also wenn wir im Text 5 mal "Hund" haben, kann ich ja nicht einfach ein str_replace machen da ich sonst bei jedem "Hund" nur "[meineID]1[/meineID]" hätte statt bei jedem hund die ID die er generiert hat in der Funktion für dieses Wort.
Danke schonmal für eure Hilfe.
Gruss
Olli
Kommentar