tout le monde j'ai une question Regex ici, je veux analyser ce fichier journal, maintenant je veux obtenir les clés et les valeurs à l'intérieur de SESSION
valeurs de match à l'intérieur d'un bloc avec délimiteurs PHP regex
Le problème est que les logs ne se ressemblent pas tous, certains d'entre eux manquent des caractères # entourant la 'SESSION', ils contiennent tous le mot SESSION pour commencer le bloc de variables, et ils se terminent tous par un autre bloc qui contient toujours soit le mots "POST" ou "API CURL CALL".
donc je dois utiliser quantificateurs les plus susceptibles de ne pas tenir compte faire quoi que ce soit entre ces chaînes mais quand correspondance des ensembles de clés et des valeurs (séparées par :) à l'intérieur de ces deux autres valeurs ...
C'est une bouchée juste en parler ... je suis complètement perplexe, alors je me tourne vers vous les gars pour quelques conseils et aide dans cette affaire. Le but est d'analyser ces journaux merdiques en quelque chose que je peux réellement lire rapidement et comprendre.
Je crée une classe en PHP pour le faire et cracher de jolis fichiers HTML formatés. Ceci est le fichier journal tel qu'il se présente.
[05:40:40] ################
[05:40:40] #### SOURCE ####: /zalo/vn/interface.call.php
[05:40:40] #### REQUEST ####: /zalo/vn/interface.call.php
[05:40:40] #### Refer: http://app.com/zalo/vn/?v=1&adsid=d6e5f33e5a94d9fafaf15dc0cf4a1e5&sub_id=170100sf01435487523&sub_id1=232s5
[05:40:40] #### SESSION #####
[05:40:40] v: 1
[05:40:40] adsid: d6e5f33e5a94d93sfsf5dc0cf4a1e5
[05:40:40] sub_id: 799e12b08fa1edes1d7bgsg0506a6e9
[05:40:40] landingpage: http%3A%2F%2Fapp.com%2Fzalo%2Fvn%2Finterface.call.php
[05:40:40] c_id: da21bae82c02d1e2b8168d57cd3fbab7
[05:40:40] nId: 3943
[05:40:40] partner: Marvel
[05:40:40] country_code: 84
[05:40:40] country: VN
[05:40:40] url: http://app.com/zalo/vn/
[05:40:40] campaign_id: 1066
[05:40:40] source: web
[05:40:40] msisdn: 906346534
[05:40:40] Phone: 906346534
[05:40:40] #### POST ####
[05:40:40] action: subscribe
[05:40:40] Phone: 906346534
[05:40:40] ################
[05:40:40] #### API CURL CALL ####
Idéalement ce que je veux garder cette section est
v: 1
adsid: d6e5f33e5a94d93sfsf5dc0cf4a1e5
sub_id: 799e12b08fa1edes1d7bgsg0506a6e9
landingpage: http%3A%2F%2Fapp.com%2Fzalo%2Fvn%2Finterface.call.php
c_id: da21bae82c02d1e2b8168d57cd3fbab7
nId: 3943
partner: Marvel
country_code: 84
country: VN
url: http://app.com/zalo/vn/
campaign_id: 1066
source: web
msisdn: 906346534
Phone: 906346534
J'ai besoin probablement une combinaison de lookbehind-préanalyse de quelque sorte.
(?=SESSION).*?(?<=POST)
Quelque chose dans ce sens, mais supprime également les horodatages la SESSION réelle et mots-clés POST que je ne ai pas besoin.
@michaJlS J'ai essayé différentes choses que j'ai vu en ligne '/ (<= ## ## SESSION #####). *? (? = \ [05: 40: 40 \] #### POST ####)/si' Lookbehinds comme ça ressemble à ce qu'ils pourraient fonctionner, mais je Je ne peux pas utiliser # * par exemple, je dois fournir une chaîne très spécifique pour commencer, ce qui est un problème car même si je sais que la chaîne contiendra SESSION, je ne sais pas exactement si elle commence par #, juste le mot SESSION ou - SESSION par exemple ... – JonnySerra
@michaJlS j'ai aussi inclus un exemple peut-être meilleur dans la question. – JonnySerra
Donc, vous savez déjà comment faire correspondre ces blocs, non? Pourquoi ne pas simplement supprimer tous les détails et les lignes dont vous n'avez pas besoin? –