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

Preg_replace

Jokus

Neues Mitglied
Moin!

1) Wie kann ich alle kommata in einem string durch "\," ersetzen? folgendes klappt nicht
Code:
$kommentar = preg_replace('/,/','\,',$_POST['Kommentar']);
2) Wie kann ich mit preg_split() einen string nach kommata auflösen außer wenn dort ein "\," ist...

3) Gibt es irgendwo eine gute Erklärung zu diesen Suchpattern? (Sowas: PHP: Meta-characters - Manual in verständlich :D)
Danke im Voraus!
 
Hm danke.
Ich wüsste aber an sich schon ganz gerne was bei mir falsch ist und wie man 2) und 3) löst..
 
Ich speicher kommentare in einen großen string in eine Tabelle. Das ganze in der Form "ID des Benutzers:Kommentar," beispiel: 5:hallo welt,
da ich mit preg_split also die einzelnen kommentare nach kommata auflöse will ich das beim einschreiben in die Datenbank statt "," ein "\," steht und beim auslesen genau diese ignoriert werden ;)

zu 2) kommt folgende Meldung: Warning: preg_split() [function.preg-split]: Compilation failed: missing terminating ] for character class at offset 10 in /users/hoschi/www/filemanager/Lunen/Mitglieder/index.php on line 792
In der Zeile steht folgendes: $teilnehmer_array = preg_split("/[^\\]{0,1},/",$aktion['Teilnehmer'],0,PREG_SPLIT_NO_EMPTY);
zu 3) danke! sowas wollt ich haben
 
Alles fertig, danke trotzdem... Ergebnis:

// Komma durch \, ersetzen
echo preg_replace('/(?<!\\\\),/', '\,', $string);

// bei , teilen
// bei \, wird nicht geteilt
print_r(preg_split('/(?<!\\\\),/', $
string));
 
mal abgesehen davon, dass nun niemand kommas in einem kommentar verwenden kann (die interpunktion also sehr zu wünschen übrig lässt) würdest du mit einem "vernünftigen" trennzeichen (z.b. tabsops) nach meiner auffsaaung wesentlich besser fahren.
 
ja darauf wurde ich auf php.de auch hingewiesen.
Dort war das Stichwort: Normalisierung...
Hab also erstmal brav meine gesamte Datenbank neu geordnet und finds auch an sich super, nur hab ich nun ein problem...
Wenn ich zum Beispiel die Mitglieder einer Gruppe nach Alter sortieren möchte...
Vorher war das kein problem:
"SELECT * FROM `Mitglieder` WHERE `Gruppe`='Gruppe 1' ORDER BY `Alter` ASC;"
Nu gibt es ja die Spalte `Gruppe` nicht mehr dafür habe ich nun die Tabelle `Gruppen` und `Mitglieder_Gruppen`
`Gruppen`: Informationen über jede Gruppe
`Mitglieder_Gruppen`: ID der Gruppe und ID der Benutzer um die Gruppen mit den Mitgliedern zu verbinden

Natürlich kann ich ja jetzt das ganze ungefair gestalten:
Code:
            $mitglieder_id_query = mysql_query("SELECT `Person_id` FROM `Mitglieder_Gruppen`".$mitglieder_id_query_zusatz);# die zusatz Variable fügt evtl ein "WHERE Gruppe_id='...' " ein um den Query auf eine Gruppe zu beschränken
            $query_zusatz = " WHERE";
            while($mitglieder_id = mysql_fetch_assoc($mitglieder_id_query)){
               $query_zusatz .= $or." `ID`='".$mitglieder_id['Person_id']."'";               
               $or = " OR";
            }#end while 

mysql_query("SELECT * FROM `Mitglieder`".$query_zusatz." ORDER BY `Alter`");
...
So würde der ganze Spaß ja an sich funktionieren... geht das noch einfacher ?
 
Zuletzt bearbeitet:
php und mysql geben dir einige möglichkeiten sauber zu programmieren, nutze sie :) - und du wirst sehen wie viel spass es machen kann....
 
Zurück
Oben