Ankündigung

Einklappen
Keine Ankündigung bisher.

Regex und Lookarounds

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

  • Regex und Lookarounds

    Hiho,

    momentan arbeite ich an einem PHP-Script, welches eine Datei ausliest und mithilfe von Regex und Lookarounds bestimmte Werte ausliest und abspeichert.
    Anfangs habe ich nur Werte ausgelesen, welche in keinem weiteren Zusammenhang mit anderen Werten stehen.
    Ein Beispiel ist z.B. folgendes:
    Regex:
    PHP-Code:
        if (preg_match("/\d+(?=,\\\\"type\\\\":\\\\"construction)/", $line$match)) {
            
    $Construction = $match[0];
            unset(
    $match);
        } 
    Dateiausschnitt:
    Code:
    {\"value\":7,\"type\":\"construction_rebate\",\"__class__\":\"ConstructionRebateBonus\"},
    Bis dahin komme ich zurecht.
    Jetzt möchte ich aus folgendem Ausschnitt die Werte von player_id, expeditionPoints und solvedEncounters auslesen.
    Code:
    {\"player\":{\"player_id\":1234567,\"name\":\"IchBinEinN4me\",\"avatar\":\"addon_portrait_id_kimberly\",\"__class__\":\"BasePlayer\"},\"expeditionPoints\":84304,\"solvedEncounters\":61,\"__class__\":\"GuildExpeditionContribution\"},
    Dazu habe ich bereits folgenen Code:
    PHP-Code:
    if (preg_match_all("/(?<=\\\\"player\\\\":{\\\\"player_id\\\\":)\d+/"$line$gexpid)) {
            
    print_r($gexpid);
        } 
    Hier wurde preg_match_all gewählt, weil es viele solcher Treffer gibt und ich alle haben möchte.
    Ausgegeben wird mir hier also ein Array mit allen player_id's.

    Meine Frage ist jetzt, kann ich meinen Ausdruck so erweitern, dass player_id, expeditionPoints und solvedEncounters ausgelesen werden und direkt zusammen in einem Array abgespeichert werden?
    Oder muss ich player_id, expeditionPoints und solvedEncounters alle einzeln auslesen und mir dann alle in einem array zusammenfügen?

    grüße


  • #2
    der String ist doch ein JSON wieso wandelst du es nicht mit json_decode nicht in ein array und dann mit array_filter weiter arbeiten?

    PHP-Code:

    $string 
    ='{"player":{"player_id":1234567,"name":"IchBinEinN4me","avatar":"addon_portrait_id_kimberly","__class__":"BasePlayer"},"expeditionPoints":84304,"solvedEncounters":61,"__class__":"GuildExpeditionContribution"}';

    $data json_decode($string,true);

    $playerId $data['player']['player_id'];
    $expeditionPoints $data['expeditionPoints'];
    $solvedEncounters $data['solvedEncounters'];
    var_dump($playerId); //1234567
    var_dump($expeditionPoints); //84304
    var_dump($solvedEncounters); //61 
    apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp

    Kommentar


    • #3
      An sowas hab ich noch gar nicht gedacht. Ich schaue mir json_decode mal genauer an.
      Danke schon mal, auch für das Beispiel. Das sieht auf den ersten Blick wesentlich einfacher aus.

      Kommentar

      Lädt...
      X