Ankündigung

Einklappen
Keine Ankündigung bisher.

Unbekannten String-Teil aus einem Datenbank-Feld löschen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Unbekannten String-Teil aus einem Datenbank-Feld löschen

    Hallo.

    Ich brach mal eure Hilfe.

    Ich habe in einer MySQL-Tabelle ein Text-Feld, in dem sich in etwa folgender Inhalt befindet.

    ;12 34 567;;543 54 5674;;43 3 1364;;3 543 32;

    Ich möchte mittels

    Code:
    $row['string'] = str_replace(';??? '.$_GET['var'].' ???;', '', $row['string']);
    einen Teil des Strings löschen und dann wieder zurück schreiben.

    Mein Problem dabei ist, ich weis immer nur einen Teil des Strings. Der Rest kann variable sein.

    Gibt es da die Möglichkeit von Platzhaltern, oder muss ich die Sache mit preg_replace angehen?

  • #2
    Hallo nochmal.

    Ich habe das Problem jetzt so gelöst.

    Code:
    $row['string'] = preg_replace('/;'.$_GET['var'].'\s\d{1,}\s\d{1,};/', '', $row['string']);
    Das funktioniert zwar, aber wenn jemand noch eine elegantere Lösung weiß, z.B. ohne regulärer Ausdrücke, würde ich mich freuen, wenn er diese Möglichkeit hier posten würde.

    Kommentar


    • #3
      Hallo

      Ich hab noch mal eine Frage zu meinem vorangegangenen Problem.

      Ich möchte jetzt, wenn der String zu lang wird, den ersten Eintrag löschen und den neuen hinten anfügen.
      Das anfügen ist kein Problem. Beim löschen des ersten Datensatzes bin ich noch etwas unsicher, ob ich den regulären Ausdruck wirklich richtig geschrieben habe.

      Code:
      $row['string'] = preg_replace('/^;\d{1,}\s\d{1,}\s\d{1,};/', '', $row['string']);
      Wenn ich das jetzt richtig gemacht habe, sollte nur der erste Datensatz als einziger gelöscht werden.
      Jetzt kam mir aber der Gedanke: Wenn der erste Datensatz mit nichts ersetzt wurde, der darauffolgende Datensatz automatisch der nächste "Erste Datensatz" wäre und gleich darauf auch gelöscht werden würde, bis der String leer wäre.
      Ist da was dran oder ist das falsch?

      Kommentar


      • #4
        Ich muss nochmal stören.

        Ich habe meinen Regulären Ausdruck mal in einer Test-Umgebung angewendet und musste bitterböse feststellen, dass mir der Ausdruck den gesamten String auffrißt.
        Gibt es eine Möglichkeit den Ausdruck

        Code:
        $row['string'] = preg_replace('/^(;\d{1,}\s\d{1,}\s\d{1,};){1}/U', '', $row['string']);
        so einzugrenzen, dass er nach dem ersten gematchten Ergebnis die Suche und das ersetzen abbricht?

        Kommentar


        • #5
          Oh Mann, geistige Umnachtung.
          Ich habe es, nach einigen Minuten codeanstarren ,noch einmal probiert und musste überrascht feststellen, dass meine Lösung funktioniert.

          Angenehme Nachtruhe.

          Kommentar


          • #6
            Schön das es noch leute gibt, die wie ich nicht schlafen können und darüber hinaus ihr problem selbst lösen...weiter so *daumen hoch *

            Kommentar

            Lädt...
            X