Mark: eregi()

Hallo,

wie kann ich mit Hilfe von eregi() bestimmte IDs ausschliessen?

Beispiel:

habe daten, die fortlaufend durchnummeriert sind, also meine id. Jetzt möchte ich alledings mit einer bestimmten ID weiterarbeiten, aber nur wenn diese nicht mit vorher definierten IDs übereinstimmt.

mal vereinfacht dargestellt:
------------------------------------------------
$ausgesuchteid=1;
$depricatedid="1,4,6,8";

if(eregi($depricatedid, $ausgesuchteid)
 {
 exit;
}
else
 {
 mach irgend was;
}
-------------------------------------------------
wie müsste ich jetzt mein Suchmuster definieren, damit bei id=1 abgebrochen wird, und z.B. bei id=13 weiter gemacht werden kann? Hoffe ich konnte mein Problemchen verständlich darstellen und dass mir da jemand weiterhelfen kann.

Gruss, Mark

  1. mmh habs nicht getestet aber würde die deprecateids in n array schreiben und dann über "," splitten:

    $ausgesuchteid=1;
    $depricatedid="1,4,6,8";
    $temp=split(",",$depricatedid)

    foreach($temp as $deprid)
    {
     if(eregi($deprid,$ausgesuchteid)
     {
      exit;
     }
     else
     {
     mach irgend was;
     }
    }

    probier mal..

    1. ne warte war dumm,
      so macht er "mach irgend was;" ja x-mal...

      so sollts gehen:

      $ausgesuchteid=1;
      $depricatedid="1,4,6,8";
      $temp=split(",",$depricatedid);

      $n=0;
      foreach($temp as $deprid)
      {
       if(eregi($deprid,$ausgesuchteid)$c++;
      }

      if ($c != 0)exit();
      else mach irgend was;

      1. ne warte war dumm,
        so macht er "mach irgend was;" ja x-mal...

        so sollts gehen:

        $ausgesuchteid=1;
        $depricatedid="1,4,6,8";
        $temp=split(",",$depricatedid);

        $n=0;

        arghh $c=0; natürlich

        foreach($temp as $deprid)
        {
         if(eregi($deprid,$ausgesuchteid)$c++;
        }

        if ($c != 0)exit();
        else mach irgend was;

        1. lol ok dann bastel mal, aber bastel besser als ich bitte!

          mit ereg klappt so natrülich auch nicht weil der bei deprid=1 auch 10,11,101 usw matchen würde..

          mein ALLERLETZTES angebot, (wenn ich jetzt nochn fehler lass ichs bleiben =)

          $ausgesuchteid=1;
          $depricatedid="1,4,6,8";
          $temp=split(",",$depricatedid);

          $n=0;
          foreach($temp as $deprid)
          {
           if($deprid==$ausgesuchteid)$c++;
          }

          if ($c != 0)exit();
          else mach irgend was;

          1. Hallo l4Mer,

            das passt schon, zumindest weiss ich jetzt Dank Dir in welche Richtung ich muss!

            Ein schönes Restwochenende wünsche Dir noch

            Gruss, Mark

      2. Hallo,

        werde mir mal eine entsprechende Funktion nach Deiner Anleitung zusammenbasteln.

        Danke! :)

  2. Hallo Mark,

    wie kann ich mit Hilfe von eregi() bestimmte IDs ausschliessen?

    Mein Vorschlag wäre, eregi() _nicht_ zu benutzen und statt dessen in_array() zu verwenden.
    Schreibe dazu die IDs, die ausgeschlossen werden sollen, in ein Array Deiner Wahl.

    ...

    $depricatedid="1,4,6,8";
    if(eregi($depricatedid, $ausgesuchteid)

    ...

    Warum verwendest Du überhaupt eregi() statt ereg()?
    Gibt es groß- und kleingeschriebene Zahlen?

    Hast Du Dich mit der Syntax von regulären Ausdrücken beschäftigt?
    Alternativen im Muster trennst Du mit
      |
    nicht mit
      ,

    Aber selbst wenn Du diese Ersetzung vornimmst, bekommst Du nicht das gewünschte Ergebnis, weil z.B.
      ereg('1|4|6|8', '10')
    true zurückliefert.

    wie müsste ich jetzt mein Suchmuster definieren, damit bei id=1 abgebrochen wird, und z.B. bei id=13 weiter gemacht werden kann? Hoffe ich konnte mein Problemchen verständlich darstellen und dass mir da jemand weiterhelfen kann.

    Ausser Dir kennt keiner den Algorithmus, mit dem Du die id ermittelst, mit der fortgesetzt werden soll. Ich weiß nicht, wie Du bei Deinen Beispieldaten auf 13 kommst :-(

    Freundliche Grüsse,

    Vinzenz

    1. Hallo Vinzenz

      Hallo Mark,

      Mein Vorschlag wäre, eregi() _nicht_ zu benutzen und statt dessen in_array() zu verwenden.
      Schreibe dazu die IDs, die ausgeschlossen werden sollen, in ein Array Deiner Wahl.

      Werde ich mal ausprobieren

      Warum verwendest Du überhaupt eregi() statt ereg()?
      Gibt es groß- und kleingeschriebene Zahlen?

      Hast recht, hatte ich vertauscht, war unachtsam..., gelobe Besserung

      Hast Du Dich mit der Syntax von regulären Ausdrücken beschäftigt?
      Alternativen im Muster trennst Du mit
        |
      nicht mit
        ,

      »»
      Deswegen Frage ich hier ja, weil ich nicht weiss wie ich mein Suchmuster definieren soll ;)

      Aber selbst wenn Du diese Ersetzung vornimmst, bekommst Du nicht das gewünschte Ergebnis, weil z.B.
        ereg('1|4|6|8', '10')
      true zurückliefert.

      Also weisst Du es auch nicht?!?!

      Ausser Dir kennt keiner den Algorithmus, mit dem Du die id ermittelst, mit der fortgesetzt werden soll. Ich weiß nicht, wie Du bei Deinen Beispieldaten auf 13 kommst :-(

      Sollte nur als Beispiel dienen und eben nicht die Bedingung von id=1 erfüllen..., also anstatt id=1 eben halt id=13. Da hätte ebenso jede andere Zahl kommen können ausser einer unerwünschten.

      THX4Gr8Help

      Gruss, Mark

      1. Hallo Mark,

        Folgende Anker kannst Du verwenden:
          ^        - Anfang des Strings
          $        - Ende des Strings
          [[:<:]]  - Anfang eines Wortes
          [[:>:]]  - Ende eines Wortes

        ereg('[[:<:]]1[[:>:]]', '10'); // liefert false zurück :-)
        ereg('^1$'), '10');            // ebenfalls

        Ich denke aber immer noch, dass Du das Pferd von hinten aufzäumst.

        Ich interpretiere die Aufgabe, die Du Dir gestellt hast, folgendermaßen:

        Überprüfe ob die aktuelle ID in einer Liste von IDs enthalten ist
        Wenn ja
          Gehe raus
        Sonst
          Mache etwas anderes
        Ende Wenn

        Warum versteifst Du Dich auf ereg() bzw. eregi()?
        Schließlich vergleichst Du im Grunde Zahlen miteinander, nicht Zeichenketten, die Zahlen darstellen.  Verwendest Du ereg() und Konsorten, dann vergleichst Du Zeichenketten und machst Dir meiner Meinung nach unnötige Arbeit.

        Freundliche Grüsse,

        Vinzenz

        1. Hallo Vinzenz,

          habe eben in_array() ausprobiert. Funktioniert auch - Werde dieses dann verwenden wenn ich nur Zahlen als Kriterium benutze. Ansonsten ist die andere Lösung auch sehr gut, weil vielseitig einsetzbar...

          Dankeschön

          1. Hallo Vinzenz,

            habe eben in_array() ausprobiert. Funktioniert auch - Werde dieses dann verwenden wenn ich nur Zahlen als Kriterium benutze. Ansonsten ist die andere Lösung auch sehr gut, weil vielseitig einsetzbar...

            Dankeschön

            Quatsch... in_array() ist natürlich auch vielseitig (erst denken, dann schreiben)

            Sorry, Mark

  3. Hallo!

    wie kann ich mit Hilfe von eregi() bestimmte IDs ausschliessen?

    Wieso nimmst Du keinen Array? Du könntest die IDs in einen Array schreiben und mit in_array() prüfen ob die ID darin vorkommt.

    Grüße
    Andreas