if ( $variable ) nicht auf true checken sondern inhalt der variable "iffen"...

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

  • if ( $variable ) nicht auf true checken sondern inhalt der variable "iffen"...

    Tach!

    Mein Problem: ich will eine if abfrage einer variable nicht auf true oder false checken, sondern das was in der variable $ifmatch steht als abfrage... hier der passende code...

    PHP-Code:
    $zeile "abc efg";
    $testarray = array("abc","cde","efg");
    for(
    $test=0;$test<count($testarray);$test++){
            
    $oder "||";
            if(
    $test == count($testarray)-1$oder "";
            
    $ifmatch .= "preg_match('!".$testarray[$test]."!i',".$zeile.") $oder ";
          }

    // hier soll nicht einfach nur auf TRUE gecheckt werden sondern
    // hier soll die preg_match kette rein....
    if( $ifmatch ){ 
    echo 
    "eines der strings aus dem $testarray gefunden";

    wenn einer weiss wie und mir evtl. ein beispiel machen würde wer ich mega dankbar...

    Würde mir mega weiterhelfen wenn ihr mir dabei helfen könntet...

    PHP-Code:
    echo 'greet'.strtoupper('z').' s'.chr(51).'riou'.strtoupper('z'); 

  • #2
    Um es mal in deiner Sprache auszudrücken:

    MeGa WTF?

    Was steht in $ifmatch?

    Kommentar


    • #3
      Was du suchst ist eval - das Ergebnis ist dann true oder false. In deinem Beispiel aber einfach Unsinn. Folgendes ist wesentlich einfacher und schneller:
      PHP-Code:
      $zeile "abc efg";
      $testarray = array("abc","cde","efg");
      if( 
      preg_match '!(' implode '|'$testarray ) . ')!i'$zeile ) { 
      echo 
      "eines der strings aus dem $testarray gefunden";

      Noch besser ist es Stringfunktionen zu verwenden:
      PHP-Code:
      $zeile "abc efg";
      $testarray = array("abc","cde","efg");

      foreach ( 
      $testarray as $search ) {
      if ( 
      strpos $search$zeile ) !== false ) {
      echo 
      "eines der strings aus dem $testarray gefunden";
      }

      Zuletzt geändert von tontechniker; 23.11.2007, 19:17.
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar


      • #4
        mega


        in $ifmatch steht in diesem fall folgendes...

        preg_match('!abc!i',"abc efg") || preg_match('!cde!i',"abc efg") || preg_match('!efg!i',"abc efg")

        und die if abfrage soll dann so aussehen:

        PHP-Code:
        if( preg_match('!abc!i',"abc efg") || preg_match('!cde!i',"abc efg") || preg_match('!efg!i',"abc efg") ) { echo "geschafft"; } 
        danke^^

        Kommentar


        • #5
          Jou, lern richtig(!) mit Regulären Ausdrücken umzugehen (s. tontechniker) dann brauchst du sowas nicht zu verunstalten. Für deine Abfragen würde übriens strpos vollkommen reichen.

          Aber wie gesagt, regex sind super geeignet.

          Kommentar

          Lädt...
          X