Ankündigung

Einklappen
Keine Ankündigung bisher.

Suchen Zahl/Buchstabenblock und trenne durch Bindestrich

Einklappen

Neue Werbung 2019

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

  • Suchen Zahl/Buchstabenblock und trenne durch Bindestrich

    Hallo,

    da ich eine der wenigen in der Klasse bin, die sich einigermaßen mit PHP auskennt, wurde mir mal wieder eine super tolle aufgabe gegeben.

    aus einer datenbank mit ca. 400.000 einträgen soll ich buchstaben und zahlenblöcke jeweils durch ein trennzeichen ersetzten.

    so soll ich bespielsweise aus

    abc12de => ab-12-de
    ab-12de-456gf => ab-12de-478-fg

    werden.

    die zeilen lese ich bereits einzelnd aus der datenbanktabelle "fachnoten" und übertrage sie in eine neue datenbanktabelle "neu" ein.


    kann mir jemand evtl. helfen? ich muss diesen bindestrich überall hinbekommen, also nach einem zahlenblock bzw. zeichenblock ein bindestrich zu setzten und verzweifle bald wenn ich das weiter per hand mache

    wäre echt dankbar wenn mich einer erlösen könnte

    lg ines

  • #2
    Reguläre Ausdrücke

    Kommentar


    • #3
      hallo,

      ich habe mir das schon gedacht, dass man dies mit den regulären ausdrücken durchführen kann nur habe ich keinerlei ahnung wie ich dies konkret bei meinem problem nutzen soll.

      ich lese ja jede zeile der alten datenbanktabelle durch ein script ein, dann ändere ich die schreibweise im moment noch per hand und übertrage die neue variante der schreibweise in eine andere datenbanktabelle.

      hat keiner von euch ein beispielcode für mich wie ich dem array $noten beibringen kann, nach jedem zahlen und buchstabenteil ein bindestrich zu setzten?

      Kommentar


      • #4
        hm .. Naja .. Das hier setzt vor jedes "Zeichenkette" (a-zA-Z) ein "-"

        PHP-Code:
        $txt="föklsjf45425435ökldsjfökldsjf432432ökljdsf324lkj324kljkl32j4j42lkjl";
        $ersetze'-\0-';
        $suche  '/[a-zA-Zäöü]+/'
        $text preg_replace($suche$ersetze$txt); 
        Oder so ähnlich zumindest ...



        Naja und Sonderzeichen Umlaute etc. musst natürlcih noch extra behandeln ..

        Kommentar


        • #5
          hallo

          der tipp hat mir sehr geholfen. jetzt ist nur noch die frage wie ich am anfang und am ende von $text den bindestrich wegbekomme. ansonsten hast du mir schon sehr geholfen und sage hierfür ganz lieb *danke*

          Kommentar


          • #6
            PHP-Code:
            $neu preg_replace ("~^(-)?(.)*(-)?$~","\1",$alt); 
            Ungetestet

            Kommentar


            • #7
              na mit substr()

              PHP-Code:
              <?php
              $text 
              substr($text,1,-1);
              ?>
              Mensch .. 'n bissl mit machen ..

              Kommentar


              • #8
                Zitat von KingCrunch
                PHP-Code:
                $neu preg_replace ("~^(-)?(.)*(-)?$~","\1",$alt); 
                Ungetestet
                *uff* was du hier wieder "hinblätterst" ...

                Laut : http://www.cix88.de/projekte/regexp/
                klappt das nicht aber mit RegExen komm ich eh noch nicht so klar ...

                Kommentar


                • #9
                  Das klappt nicht? Na, von mir aus, deine Lösung gefällt mir sowieso besser und dürfte auch schneller sein. Das ich da net drauf gekommen bin, ärgert mich grad ein wenig

                  Kommentar


                  • #10
                    danke jungs für die nette hilfe von euch beiden. ich habe den tipp von m3g4star angenommen. bei mir hat es allerdings nur mit substr statt sub_str funktioniert.

                    lg ines & thx :P

                    Kommentar


                    • #11
                      *hust* Hab ich sub_str geschrieben ?!?!



                      Oh gott 's ist schon spät

                      Ja naja ich denk glaub ich bei RegExen immernohc recht "einfach" . daher auch die "einfache" Lösung ... *lach*

                      Kommentar


                      • #12
                        @indes17

                        abc12de => ab-12-de
                        ab-12de-456gf => ab-12de-478-fg
                        So ganz einfach und ganz schnell wird das nicht.
                        Du musst erst prüfen, ob schon ein - vorhanden ist, falls nicht dann trennen und ein - Zeichen einfügen.
                        Also etwas mit (?<!MUSTER) und (?!MUSTER) basteln

                        Kommentar


                        • #13
                          *hm* damit hab ich 's nicht getestet .. aber 's sollte ja auch nur 'n Ansatz sein ...



                          Wie schon gesagt .. RegEx ist nicht mein Topic

                          Kommentar


                          • #14
                            Zitat von CIX88
                            So ganz einfach und ganz schnell wird das nicht.
                            Du musst erst prüfen, ob schon ein - vorhanden ist, falls nicht dann trennen und ein - Zeichen einfügen.
                            Also etwas mit (?<!MUSTER) und (?!MUSTER) basteln
                            Wieso das?

                            Vielleicht seh ich gerade das Problem nicht...
                            PHP-Code:
                            <?php
                              $str 
                            'ab-cd65-de5g';

                              
                            $pattern = array('#([A-Z])(\d)#i''#(\d)([A-Z])#i');
                              
                            $replace '\1-\2';
                              
                            $str     preg_replace($pattern$replace$str); // => ab-cd-65-de-5-g
                            ?>

                            Kommentar


                            • #15
                              Hab ich wohl etwas sehr weit ausgeholt ....

                              Kommentar

                              Lädt...
                              X