Ankündigung

Einklappen
Keine Ankündigung bisher.

RegEx findet Stringvorkommen nicht

Einklappen

Neue Werbung 2019

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

  • RegEx findet Stringvorkommen nicht

    Wie die Headline schon aussagt finde ich den Fehler in meinem RegEx nicht. Ich versuche innerhalb der Ausgabe des Kommandos "arp -a" zu prüfen ob eine MAC Adresse mehr als 1x vorkommt.

    Das tolle ist so wie ich mir das vorgestellt habe bekomme ich das nicht selektiert.

    Mein Ursprungscode sieht so aus:

    PHP-Code:
    <?php
    $strArpCacheOutput 
    exec("arp -a");

    if (
    ereg("[a-zA-Z0-9]{2}-[a-zA-Z0-9]{2}-[a-zA-Z0-9]{2}-[a-zA-Z0-9]{2}-[a-zA-Z0-9]{2}-[a-zA-Z0-9]{2}"$strArpCacheOutput) == true)
    {
        print(
    "gültig");
    }
    else
    {
        print(
    "ungültig");
    }
    ?>
    Soweit so gut. Damit findet er eine MAC Adresse schonmal.
    Dann habe ich den RegEx in "( RegEx ){1}" geklammert was aber net funktionieren will, bzw. nicht das ergebnis liefert was ich mir erwarte:

    PHP-Code:
    <?php
    $strArpCacheOutput 
    exec("arp -a");

    if (
    ereg("([a-zA-Z0-9]{2}-[a-zA-Z0-9]{2}-[a-zA-Z0-9]{2}-[a-zA-Z0-9]{2}-[a-zA-Z0-9]{2}-[a-zA-Z0-9]{2}){1}"$strArpCacheOutput) == true)
    {
        print(
    "gültig");
    }
    else
    {
        print(
    "ungültig");
    }
    ?>

    Falls wer fit in RegEx ist kann er mir bitte helfen.

    Danke schon einmal im vorraus.

  • #2
    Habs getestet, "arp -a" geht garnicht, eine MAC-Adresse wird erkannt, von beiden.

    Was steht denn konkret in $strArpCacheOutput?

    Kommentar


    • #3
      Vieleicht:

      PHP-Code:
      <?php
      error_reporting
      (E_ALL);

      $TXT = <<<EOD
      Schnittstelle: 192.168.1.199 --- 0x10003 
        Internetadresse       Physikal. Adresse     Typ 
        192.168.1.1           00-40-01-51-cd-c8     dynamisch  

      EOD;

      $pattern '/[0-9a-f]{2}-[0-9a-f]{2}-[0-9a-f]{2}-[0-9a-f]{2}-[0-9a-f]{2}-[0-9a-f]{2}/i';
      preg_match_all($pattern$TXT$array);

      echo 
      '<pre>'print_r($arraytrue), '</pre>';

      ?>

      Kommentar


      • #4
        Verstehe die aussage nicht so ganz von dir.
        Das eine gefunden wird ist mir klar. Ich will allerdings das der Ausdruck nur dann true ist wenn wenn die MAC Adresse auch nur max. 1x vorkommt. niedriger, also gar kein vorkommen oder mehrere verschiedene sind sollen somit auch wahr sein.

        Was meinst du mit "arp -a" geht nicht? evtl. innerhalb deines %path% net c:\windows\system32 enthalten?

        Kommentar


        • #5
          Zitat von arp -a
          Keine ARP-Einträge gefunden.
          Außerdem, warum immer alles in einen Ausdruck drücken, wenns in wenigen kompakten auch geht??

          preg_match_all() und substr_count helfen doch vielleicht schon...

          Kommentar


          • #6
            @ CIX88:
            Diese Erweiterung mit dem / Regex /i ist mir ganz neu aber führt schonmal zu einem sehr guten zwischen ergebnis, damit kann ich so schonmal weiter arbeiten!

            Super und vielen dank!!!

            Kommentar


            • #7
              Geht auch:

              '/([0-9a-f]{2}-){5}[0-9a-f]{2}/i'

              Jetzt brauchst du nur noch überprüfen, ob dieses Ergebnis mehrmals vorkommt.

              Kommentar

              Lädt...
              X