Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] problem mit preg_match_all

Einklappen

Neue Werbung 2019

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

  • [Erledigt] problem mit preg_match_all

    hi ... ich bin neu hier , und habe da auch gleich mal ein problem bei dem ich eure hilfe gebrauchen könnte ...
    und zwar geht es darum, ich habe ein php script das mir aus einer LUA ein php array macht ...

    nur gibt es da ein problem...

    in der LUA sind stellen die sehen so aus: (test.lua im anhang)

    Code:
    {  ...  }, -- [1]
    und ich muss daraus das machen:
    Code:
    ["1"] = { ...  },
    ich habe es mit :
    PHP-Code:
    $lua file('test.lua');
    $edit_lua implode(" ",$lua);
    $edit_lua str_replace("<br>",'',$edit_lua);

        
    preg_match_all("!{(?P<c>.+)}, -- \[(?P<n>.+)\]!"$edit_lua$var);
        for(
    $i=0;$i<count($var['n']);$i++){
            
    $edit_lua preg_replace("/{".$var['c'][$i]."}, -- \[".$var['n'][$i]."\]/",'["'.$var['n'][$i].'"] = {'.$var['c'][$i].'},',$edit_lua);
        } 
    versucht, da dies bei meinem scripten bis jetzt immer geklappt hat ^^ ...
    aber es geht einfach nicht ...

    könnt ihr mit bitte helfen ...
    danke im vorraus

    MFG Death
    Angehängte Dateien

  • #2
    aber es geht einfach nicht ...
    ist keine sinnvolle Problembeschreibung.
    [URL]http://hallophp.de[/URL]

    Kommentar


    • #3
      hmm ja ok ^^ sry ... also ...
      das preg_match_all findet einfach nix ... ergo kann das preg_replace auch nix ersetzen ...
      ich habe es mit einem print_r der $var versucht und da ist nix drinn ...

      ich kenne mich mit dem preg_match_all aber auch nicht so gut aus ^^ ...
      ich habe aber auch schon seit tagen die Manual studiert und blicke einfach nicht durch -.- ...

      Kommentar


      • #4
        Schau dir mal den Modifikator s an: http://php.net/manual/de/reference.p....modifiers.php
        [URL]http://hallophp.de[/URL]

        Kommentar


        • #5
          das hab ich mir auch schon mehrmals durchgelesen ... aber ich habe kein plan wie,wo und vorallem welche modifikatoren ich verwenden soll (muss) ....

          das was ich verwende war mal in einer beispiel datei enthalten und hatte wie gesagt bis jetzt immer funktioniert ...

          nur leider scheint es hierfür nicht zu reichen ...

          Kommentar


          • #6
            Dann bekommst du eben noch eine andere Quelle: http://regexp-evaluator.de/tutorial/modifier/

            und vorallem welche modifikatoren ich verwenden soll (muss)
            Das habe ich dir ja eigentlich geschrieben. Und außerdem sollte das auch durch die Beschreibung zu den Modifikatoren deutlich werden.
            [URL]http://hallophp.de[/URL]

            Kommentar


            • #7
              und wenn es darüber nicht will, dannn nimm halt herkömmliche String-Funktionen ....

              mit diesen schön zu erkennenden Kennzeichen { } [ ] kann man den String auch wunderbar mit strpos /strrpos durchsuchen, und dann "kleinschnipseln"
              "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

              Kommentar


              • #8
                also ...

                X = ignoriere lehrzeichen
                i = ignoriere Groß und klein schreibung
                D = zeilenumbruch am ende

                ergo müste laut meinem verständniss:
                PHP-Code:
                    preg_match_all("!{(?P<c>.+)},--\[(?P<n>d+)\]!iDX"$edit_lua$var);
                    for(
                $i=0;$i<count($var['n']);$i++){
                        
                $edit_lua preg_replace("!{".$var['c'][$i]."},--[".$var['n'][$i]."]!iDX",'["'.$var['n'][$i].'"] = {'.$var['c'][$i].'},',$edit_lua);
                    } 
                gehen ...

                aber immernoch nix ... hab ich da was falsch verstanden ??

                Kommentar


                • #9
                  X = ignoriere lehrzeichen
                  Es heißt erstens „Leerzeichen“ und zweitens hast Du das Manual nicht richtig gelesen.
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #10
                    erstens habe ich LRS ... also sry für rechtschreib fehler
                    und zweitens lese ich dies seit tagen und kappier es nur einfach nicht ...

                    wäre ich aus dem schlau geworden müste ich mir keine hilfe holen ...

                    es wäre nett wenn mir jemand das ganze mal so scripten würde das es geht ... und mir den aufbau erklärt ...

                    -- EDIT ---
                    so ... nach etwas experimentieren und einfach mal alles durch probiert ^^ .... geht es nun:

                    PHP-Code:
                    preg_match_all('/\t\{(.+)\}\, \-\- \[(?P<n>.+)\]/sU'$edit_lua$var);
                        for(
                    $i=0;$i<count($var['n']);$i++){
                            
                    $edit_lua preg_replace('/\t\{(.+)\}\, \-\- \['.$var['n'][$i].'\]/sU',"\t".'["'.$var['n'][$i].'"] = {\\1},',$edit_lua);
                        } 
                    aber die geposteten manueal kannte ich schon und die haben mir perönlich nicht geholfen ... -.-

                    trozdem danke für die hilfe ^^....

                    -- EDIT 2 --
                    ok neues problem ... mit der test.lua funktioniert es wie gesagt einwandfrei ... nur wenn ich die "normalen" lua dateien verwenden will (ca 5000 zeilen) ist die variable lua danach leer ...

                    mein code sieht nun so aus:
                    PHP-Code:
                    $lua file("lua_chars/LUA/$cname2.lua");
                    $lua implode("",$lua);
                    $lua str_replace("<br>",'',$lua);

                    echo 
                    'vorher: '.strlen($lua)." zeichen <br>";

                        
                    preg_match_all('/\t\{(.+)\}\, \-\- \[(?P<n>.+)\]/sU'$lua$var);
                        for(
                    $i=0;$i<count($var['n']);$i++){
                            
                    $lua preg_replace('/\t\{(.+)\}\, \-\- \['.$var['n'][$i].'\]/sU',"\t".'["'.$var['n'][$i].'"] = {\\1},',$lua);
                        }

                    echo 
                    'nachher: '.strlen($lua). " zeichen"
                    die ausgabe war zum testen ...
                    vorher : 239147 zeichen
                    nachher: 0 zeichen

                    der aufbau der lua datein ist nicht anders als die der test.lua nur das noch ein par array's hinzu kommen

                    mfg Der Death

                    Kommentar


                    • #11
                      es wäre nett wenn mir jemand das ganze mal so scripten würde das es geht ... und mir den aufbau erklärt ...
                      Das ist nicht die AUfgabe dieses Forums.

                      [MOD: verschoben]
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        Zitat von DeathShadow Beitrag anzeigen
                        hi ... ich bin neu hier , und habe da auch gleich mal ein problem bei dem ich eure hilfe gebrauchen könnte ...
                        und zwar geht es darum, ich habe ein php script das mir aus einer LUA ein php array macht ...

                        Warum wandelst du die Datenstruktur in LUA nicht in ein Format um, was PHP versteht oder wenigstens dekodieren kann? JSON wäre so ein Format, das sowohl PHP als auch LUA kennen.

                        PHP kann JSON-kodierte Objekte und Arrays mit json_decode() einlesen. Und falls du das Array als PHP-Quelltext brauchst, kannst du den mit var_export() erzeugen.
                        Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

                        Kommentar


                        • #13
                          ich will es ja in ein php array umwandeln ... aber da mus ich vorher diesen nicht ganz korecten aufbau korigieren ... ich habe es im übrigen schon geschaft ... mit :

                          PHP-Code:
                              if(preg_match_all('/\t\{(?P<c>.+)\}\, \-\- \[(?P<n>.+)\]/sU'$lua$var)){
                                  for(
                          $i=0;$i<count($var['n']);$i++){            
                                      
                          $lua str_replace('{'.$var['c'][$i].'}, -- ['.$var['n'][$i].']','['.$var['n'][$i].'] = {'.$var['c'][$i].'},',$lua);
                                  }
                              } 
                          geht das ganze nun ...

                          dennoch danke für die hilfe ^^

                          Kommentar


                          • #14
                            Schön sinnfrei. Keine AHnung, warum DU denkst, das wäre hinterher ein PHP-Array.
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #15
                              Zitat von DeathShadow Beitrag anzeigen
                              ich will es ja in ein php array umwandeln ...
                              Du versuchst, in PHP ein Lua-"Array" (eigentlich eine Lua-Table?) zu parsen. Mein Vorschlag war, mit einem Lua-Script aus der Lua-Table eine Datenstruktur zu machen, die man mit einem (anderen) PHP-Script einlesen kann. Das spart dir den Aufwand, in PHP einen Lua-Table-Parser zu bauen.

                              aber da mus ich vorher diesen nicht ganz korecten aufbau korigieren ... ich habe es im übrigen schon geschaft ... mit :

                              PHP-Code:
                                  if(preg_match_all('/\t\{(?P<c>.+)\}\, \-\- \[(?P<n>.+)\]/sU'$lua$var)){
                                      for(
                              $i=0;$i<count($var['n']);$i++){            
                                          
                              $lua str_replace('{'.$var['c'][$i].'}, -- ['.$var['n'][$i].']','['.$var['n'][$i].'] = {'.$var['c'][$i].'},',$lua);
                                      }
                                  } 
                              geht das ganze nun ...
                              Dein Daten-Beispiel zeigte eine verschachtelte (rekursive) Struktur. Ich sehe in deinem Quellcode keine Rekursion. Wenns für deine Zwecke funktioniert, gut für dich.
                              Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

                              Kommentar

                              Lädt...
                              X