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

  • indes17
    hat ein Thema erstellt Suchen Zahl/Buchstabenblock und trenne durch Bindestrich.

    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

  • Gast-Avatar
    Ein Gast antwortete
    Hab ich wohl etwas sehr weit ausgeholt ....

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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
    ?>

    Einen Kommentar schreiben:


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



    Wie schon gesagt .. RegEx ist nicht mein Topic

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    @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

    Einen Kommentar schreiben:


  • M3g4Star
    antwortet
    *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*

    Einen Kommentar schreiben:


  • indes17
    antwortet
    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

    Einen Kommentar schreiben:


  • KingCrunch
    antwortet
    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

    Einen Kommentar schreiben:


  • M3g4Star
    antwortet
    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 ...

    Einen Kommentar schreiben:


  • M3g4Star
    antwortet
    na mit substr()

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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • indes17
    antwortet
    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*

    Einen Kommentar schreiben:


  • M3g4Star
    antwortet
    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 ..

    Einen Kommentar schreiben:


  • indes17
    antwortet
    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?

    Einen Kommentar schreiben:


  • M3g4Star
    antwortet
    Reguläre Ausdrücke

    Einen Kommentar schreiben:

Lädt...
X