kostenloser Webspace werbefrei: lima-city


Prüfen ob eins von mehreren Zeichen in String vorhanden ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    wmag

    wmag hat kostenlosen Webspace.

    Hallo

    ich möchte prüfen, ob mind. ein Zeichen (von mehreren zur Auswahl) in einem String vorhanden sind

    Beispiel:
    die zu prüfenden Zeichen sind
    .... Doppelpunkt
    :
    ... und ... Komma
    ,


    ein paar Test Strings

    $strings = array( 
      '1' => 'Diesers Beispiel ist: ganz einfach', 
      '2' => 'Dieser Text ist nur ein Beispiel', 
      '3' => 'Nur ein Beispiel, dieser kleine Text', 
      '4' => 'Text als Beispiel; einfach nur so', 
      '5' => 'Dieser Text ist: Beispiel, aber doppelt', 
    );


    jetzt habe ich die Prüfung zwar mit strpos() hinbekommen

    foreach($strings as $key => $val) { 
    	
    	if ( strpos($val,':') !== false || strpos($val,',') !== false ) { 
    		$treffer = 'ja'; 
    		} else { 
    		$treffer = 'nein'; 
    		} 
    	
    	print "<br />".$key." --- ".$val." --- ".$treffer."\n"; 
    
    }


    Ergebnis:
    1 --- Diesers Beispiel ist: ganz einfach --- ja
    2 --- Dieser Text ist nur ein Beispiel --- nein
    3 --- Nur ein Beispiel, dieser kleine Text --- ja
    4 --- Text als Beispiel; einfach nur so --- nein
    5 --- Dieser Text ist: Beispiel, aber doppelt --- ja


    aber wenn ich mal andere Zeichen prüfen möchte, als die
    :
    und
    ,
    aus dem Beispiel

    dann müsste ich die Zeile mit
    if ( strpos(...
    jedesmal einzeln anpassen,

    Wie kann ich diese "Zeichen in String Prüfung" so machen,
    damit ich auch andere (und beliebig viele) Zeichen ab-prüfen kann ?

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Du könntest strpbrk() oder strcspn() nutzen…

    Beispiel (ungetestet):
    $treffer = strcspn($val, ':,') != strlen($val);
  4. Autor dieses Themas

    wmag

    wmag hat kostenlosen Webspace.

    Danke,
    ich habe jetzt zwei Möglichkeiten ausprobiert, fund es funktionieren beide :)

    Variante 1:
    function check_zeichen1 ($string, $zeichen) { 
    	$res = false; 
    	foreach($zeichen as $z) { 
    		if (strpos($string,$z) !== false) { $res = true; } 
    	}
    	return $res; 
    }
    
    // ------------------------------------------------------------- 
    
    $zeichen_arr = array(':',','); 
    
    foreach($strings as $key => $val) { 
    	$status = check_zeichen1($val, $zeichen_arr); 
    	if ($status === true) { $treffer = 'ja'; } else { $treffer = 'nein'; } 
    	print "<br />".$key." --- ".$val." --- ".$treffer."\n"; 
    }



    Variante 2:
    function check_zeichen2 ($string, $zstr) { 
    	$out = (strcspn($string, $zstr) != strlen($string)) ? 'ja' : 'nein';
    	return $out; 
    }
    
    
    // ------------------------------------------------------------- 
    
    $zeichen_str = ':,'; 
    
    foreach($strings as $key => $val) { 
    	$treffer = check_zeichen2 ($val, $zeichen_str); 
    	print "<br />".$key." --- ".$val." --- ".$treffer."\n"; 
    }



    Variante 1 gibt (bool) TRUE / FALSE zurück ... und Variante 2 gibt (string) 'ja' / 'nein' zurück
    ... ist wohl egal, wie man die Rückgabe macht, wichtig ist dass das Ergbnis stimmt :)


    PS: wie man das jetzt mit switch() machen könnte, habe ich noch nicht raus-gefunden ?!
    das wäre doch eher was für mehrere verschiedene Fälle, aber ich habe hier nur ja / nein
    deshalb ist wohl eine einfache if() Bedingung ausreichend.

    EDIT: ok, der Beitrag mit dem switch() Vorschlag wurde wohl gelöscht,
    das sagt mir, es war wohl keine gute Idee ... also vergessen wir das ;)




    Beitrag zuletzt geändert: 1.6.2013 15:43:08 von wmag
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    n0tiert schrieb:
    $deinCheckArray = array(3, 4, 5, "string", "2010-05-16");
    if(in_array($var, $deinCheckArray)){
        // Eintrag gefunden.
    }
    tchab schrieb:
    Oder du nutzt switch dafür.
    Und wie löst das das Problem des TE einen String auf Vorkommen mindestens eines Zeichens aus einer Menge von Zeichen zu prüfen? Eure Vorschläge prüfen nur, ob der String in einer Menge von Strings enthalten ist…

    wmag schrieb:
    PS: wie man das jetzt mit switch() machen könnte, habe ich noch nicht raus-gefunden ?!
    Also nein, das funktioniert mit switch gar nicht so wie du dir das vorstellst ;-)


    wmag schrieb:
    Variante 1 gibt (bool) TRUE / FALSE zurück ... und Variante 2 gibt (string) 'ja' / 'nein' zurück
    ... ist wohl egal, wie man die Rückgabe macht, wichtig ist dass das Ergbnis stimmt :)
    Das funktioniert auch umgekehrt. Normalerweise ist allerdings ein bool besser zur Weiterverarbeitung geeignet.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!