+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 17
  1. #1
    Registriert seit
    Apr 2007
    Ort
    Lüneburg
    Beiträge
    3,846

    Standard ...auf Kriegsfuss mit RegEx und preg_match...

    Hallo Leute,
    bin hier mit den im Betreff genannten Themen seit Stunden - leider erfolglos - beschäftigt:
    PHP-Code:
    $zeichenkette '16,N,01023.67976,E,1.362,,190917,,,A*73<CR><LF>$GPVTG,,T,,M,1.362,N,2.523,K,A*23<CR><LF>$GPGGA,035931.00,5321.54516,N,01023.67976,E,1,06,1.78,1.4,M,44.8,M,,*5B<CR><LF>$GPGSA,A,3,32,12,24,29,14,25,,,,,,,3.43,1.78,2.93*0D<CR><LF>$GPGSV,3,1,11,02,36,098,17,03,04,350,,06,26,051';
    $suchmuster '/(\$GPVTG))/';
    preg_match($suchmuster$zeichenkette$treffer);
    print_r($treffer); 
    Was möchte ich:
    - der gesuchte Teilstring beginnt mit "$GPVTG" ($GPGGA|$GPGSA|$GPVTG)
    - der gesuchte Teilstring endet mit "<CR><LF>"
    - das Ergebnis-Array sollte alle gefunden Treffer auflisten
    Aber so sehr ich auch am "Suchmuster" experimentiere, bisher kein Erfolg..

    Hat jemand den entscheidenden Tipp für mich?

    Joachim
    IP-Symcon seit 12/2009, iPhoneApp seit 01/2011, IPSView seit 12/2014!
    3xSiemensLOGO0BA7+DM16, 1xInstar 3010PoE, 1xInstar 2905PoE, 1x1-WireHub mit DS2450 von Eservice-online, 15xDS1820, 1xDS2423, 1xDS2408

  2. #2
    Registriert seit
    Feb 2017
    Beiträge
    2,130

    Probier mal das Suchmuster:

    PHP-Code:
    $suchmuster '/(\$GPVTG)([^(<CR><LF>)]*)(<CR><LF>)/'
    So wie ich deine Beschreibung verstehe, sollte das dein gewünschtes Muster sein. Wenn du alle Matches haben möchtest solltest du die Funktion preg_match_all verwenden: PHP: preg_match_all - Manual

  3. #3
    Registriert seit
    Apr 2007
    Ort
    Lüneburg
    Beiträge
    3,846

    Hallo Dr.Niels,

    der Tipp war goldrichtig - läuft jetzt!
    Vielen Dank!

    Joachim
    IP-Symcon seit 12/2009, iPhoneApp seit 01/2011, IPSView seit 12/2014!
    3xSiemensLOGO0BA7+DM16, 1xInstar 3010PoE, 1xInstar 2905PoE, 1x1-WireHub mit DS2450 von Eservice-online, 15xDS1820, 1xDS2423, 1xDS2408

  4. #4
    Registriert seit
    Apr 2007
    Ort
    Lüneburg
    Beiträge
    3,846

    ...muss leider noch einmal nachhaken...

    Bei meinen Tests in einem PHP-Editor war es wichtig, dass der String ($zeichenkette) in ' ' (Hochkomma) gesetzt war " " (Anführungsstriche) führten dazu, dass die ankommenden "$GPVTG" als Variable gedeutet wurden.

    Nun habe ich das in mein GPS-Modul eingebaut und bekomme keine sinnvollen Ergebnisse mehr.
    Meine Vermutung: die Nutzung von SetBuffer/GetBuffer ist ein String in " " (Anführungsstriche).
    Kann das so sein?
    Wie bekomme ich einen String der der Einfassung in ' ' (Hochkomma) entspricht?

    Joachim
    IP-Symcon seit 12/2009, iPhoneApp seit 01/2011, IPSView seit 12/2014!
    3xSiemensLOGO0BA7+DM16, 1xInstar 3010PoE, 1xInstar 2905PoE, 1x1-WireHub mit DS2450 von Eservice-online, 15xDS1820, 1xDS2423, 1xDS2408

  5. #5
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    10,552

    Der Instanz Buffer ist ein String.. ganz ohne Anführungszeichen.
    Du bekommst eher kein Ergebnis weil <CR><LF> sind bestimmt Steuerzeichen und besteht nicht aus spitzen Klammern und Buchstaben.
    Michael
    Geändert von Nall-chan (20.09.17 um 18:25 Uhr) Grund: Typo
    on Win10VM (ESXi): I7, 32GB RAM, HW-RAID5, 2xSat | HW: pivccu + ca.130 Geräte (ca.550ch), EM1000, CUL, 1Wire, FritzBox Cable, Android Phone + Tablet, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, RoundCube, Win2016 Ess., MediaPortal, Kodi

  6. #6
    Registriert seit
    Apr 2007
    Ort
    Lüneburg
    Beiträge
    3,846

    ...ich hatte für den Test einen Teil kopiert. So wie man es oben sieht kommt es als Text an. Bei dem Test hat der Ansatz so funktioniert wie Dr.Niels es vorgeschlagen hatte...
    IP-Symcon seit 12/2009, iPhoneApp seit 01/2011, IPSView seit 12/2014!
    3xSiemensLOGO0BA7+DM16, 1xInstar 3010PoE, 1xInstar 2905PoE, 1x1-WireHub mit DS2450 von Eservice-online, 15xDS1820, 1xDS2423, 1xDS2408

  7. #7
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    10,552

    Womit kopiert.. woraus ?
    Aus dem Debug eines IO ?
    Der stellt Steuerzeichen 'leserlich' dar.

    Michael
    on Win10VM (ESXi): I7, 32GB RAM, HW-RAID5, 2xSat | HW: pivccu + ca.130 Geräte (ca.550ch), EM1000, CUL, 1Wire, FritzBox Cable, Android Phone + Tablet, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, RoundCube, Win2016 Ess., MediaPortal, Kodi

  8. #8
    Registriert seit
    Apr 2007
    Ort
    Lüneburg
    Beiträge
    3,846

    Nein, das ist die textliche Übersetzung von Bytes aus einer seriellen Schnittstelle, aber nicht aus dem Debug eines IPS-I/O.
    Werde das aber mal prüfen, ob ich durch Veränderung des Suchbegriffes etwas ändere...
    IP-Symcon seit 12/2009, iPhoneApp seit 01/2011, IPSView seit 12/2014!
    3xSiemensLOGO0BA7+DM16, 1xInstar 3010PoE, 1xInstar 2905PoE, 1x1-WireHub mit DS2450 von Eservice-online, 15xDS1820, 1xDS2423, 1xDS2408

  9. #9
    Registriert seit
    Apr 2007
    Ort
    Lüneburg
    Beiträge
    3,846

    ...aber: Dein Tipp war (mal wieder) richtig!
    Danke!!

    Joachim
    IP-Symcon seit 12/2009, iPhoneApp seit 01/2011, IPSView seit 12/2014!
    3xSiemensLOGO0BA7+DM16, 1xInstar 3010PoE, 1xInstar 2905PoE, 1x1-WireHub mit DS2450 von Eservice-online, 15xDS1820, 1xDS2423, 1xDS2408

  10. #10
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    10,552

    Bitte

    Bin auch gerade mit RegEx am arbeiten und fluchen. Weil ich ein DHCP & BOOTP Pakete erkennen und unterschieden will.
    Am besten so, dass das IPS für mich macht mit RegEx beim Datenempfang.
    Daher passte das gerade.

    Habe auch 2 Stunden gesucht um meine Fehler zu finden
    Aber nun funktionier es
    Auch wenn man sich das Umrechnen der MAC von Klartext erst nach Bin und dann nach JSON nicht genauer ansehen sollte....
    PHP-Code:
            $Mac substr(json_encode(utf8_encode(hex2bin($Mac)), JSON_UNESCAPED_UNICODE), 1, -1);
            
    $Filter '.*\\\\u0001\\\\u0001\\\\u0006.*' $Mac '.*'
    Bei mir fehlen übrigendes die Backslashs zum maskieren der Backslashs zum maskieren der Binärdaten in JSON.
    Na, wenn man da keinen Knoten im Kopf bekommt

    Michael
    on Win10VM (ESXi): I7, 32GB RAM, HW-RAID5, 2xSat | HW: pivccu + ca.130 Geräte (ca.550ch), EM1000, CUL, 1Wire, FritzBox Cable, Android Phone + Tablet, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, RoundCube, Win2016 Ess., MediaPortal, Kodi

Ähnliche Themen

  1. Problem mit RegEx-Syntax
    Von JPaeper im Forum Skripte, PHP, SQL
    Antworten: 2
    Letzter Beitrag: 28.04.17, 11:39
  2. Probleme mit IPS4 auf Raspberry und YAHM auf einem 2. Raspi
    Von Burki24 im Forum Allgemeine Diskussion
    Antworten: 18
    Letzter Beitrag: 14.08.16, 09:51
  3. Regex im Editor für Suchen und Ersetzen
    Von jwka im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 5
    Letzter Beitrag: 03.10.10, 19:32
  4. PHP Details zur Funktion preg_match() gesucht
    Von a.he im Forum Skripte, PHP, SQL
    Antworten: 2
    Letzter Beitrag: 14.06.09, 18:58