Prüfen ob eins von mehreren Zeichen in String vorhanden ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
bedingung
beispiel
code
doppelpunkt
gefunden code
http
kleine text
komma
machen
manual
menge
re
status
string
switch
text
treffer
url
zeichen
-
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
jedesmal einzeln anpassen,if ( strpos(...
Wie kann ich diese "Zeichen in String Prüfung" so machen,
damit ich auch andere (und beliebig viele) Zeichen ab-prüfen kann ?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
n0tiert schrieb:
$deinCheckArray = array(3, 4, 5, "string", "2010-05-16"); if(in_array($var, $deinCheckArray)){ // Eintrag gefunden. }
tchab schrieb:
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…
Oder du nutzt switch dafür.
wmag schrieb:
Also nein, das funktioniert mit switch gar nicht so wie du dir das vorstellst
PS: wie man das jetzt mit switch() machen könnte, habe ich noch nicht raus-gefunden ?!
wmag schrieb:
Das funktioniert auch umgekehrt. Normalerweise ist allerdings ein bool besser zur Weiterverarbeitung geeignet.
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 :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage