if (Wort vorhanden)

Aser

Erfahrenes Mitglied
sers
also... ich hab da z.B.

ich hätt da zwei Texte, z.b $erlaubtegruppen und $mitgliedindiesengruppen
und es soll geprüft werden ob irgendein Wort aus dem ersten Text im zweiten Text vorhanden ist
es soll dann etwa so aussehen

PHP:
$erlaubtegruppen =  "gruppe1 gruppe2 gruppe3";
$mitgliedindiesengruppen = "gruppe4 gruppe5 gruppe6";

if (ein Wort aus $erlaubtegruppen in $mitgliedindiesengruppen vorkommt)
{
echo "access";
}

else
{
echo "acces denied";
}


hab zwar sowas gefunden... es fehlt aber noch was...:rolleyes:

Code:
if (str_contains('this is a test', 'is')) {
   echo "Found it";
}


Dank im Voraus
 
PHP:
function pruefen($text1,$text2) {
$array = explode(" ",$text1);
$check = false;
foreach ($array as $elem) {
if (strstr($text2,$elem)) {
$check = true;
}
}
if ($check == true) {
return true; // Access granted
} else {
return false; // Access denied
}
}
Ungetestet!
 
Reich doch mal nen Häppchen Code rüber, ich seh nämlich gerade überhaupt nicht ein, wie man in_array in diesem Zusammenhang sinnvoll verwenden könnte.
 
@SilentWarrior

dein Script gefällt mir sehr... :-)

allerdings ist ein Fehler drin...

es gibt zwar keine Fehlermeldung aber dies spuckt nix raus


PHP:
<?


$text1 =  "gruppe1 gruppe2 gruppe3"; 
$text2 = "gruppe4 gruppe5 gruppe6"; 

function pruefen($text1,$text2) { 
$array = explode(" ",$text1); 
$check = false; 
foreach ($array as $elem) { 
if (strstr($text2,$elem)) { 
$check = true; 
} 
} 
if ($check == true) { 
return true;// Access granted 
echo "aaa";
} else { 
return false;// Access denied 
echo "bbb";
} 
}

?>


ne yfrage
is des "pruefen" als ... Funktion aufzufassen


und welchen Sinn haben diese -> " ",
 
Zuletzt bearbeitet:
Du musst die Funktion auch aufrufen ;)
PHP:
echo pruefen($text1,$text2);

Gruß

P.S.: Das " " bedeutet, dass das Trennzeichen ein Leerzeichen ist.
 
Zuletzt bearbeitet:
Äh ja genau das ist ne Funktion, die musst du aufrufen. ;) Ich dachte, so wird's bequemer, wenn du das mehrmals machen musst. (Ok, ich hab die blöde Angewohnheit, alles in Funktionen reinzupacken.)

Diese Zeile hier:
PHP:
$array = explode(" ",$text1);
bewirkt, dass der Text 1 in ein Array verwandelt wird, welches alle Wörter enthält, die in Text 1 vorkommen (in Programmiersprache: der Text 1 wird bei jedem Leerzeichen auseinandergenommen).

Übrigens: Ich würde die echo's in der Funktion drin weglassen. Du kannst das z. B. so machen:
PHP:
function pruefen($text1,$text2) {
$array = explode(" ",$text1);
$check = false;
foreach ($array as $elem) {
if (strstr($text2,$elem)) {
$check = true;
}
}
if ($check == true) {
return true;// Access granted
} else {
return false;// Access denied
}
} 
$text1 =  "gruppe1 gruppe2 gruppe3";
$text2 = "gruppe4 gruppe5 gruppe6";
if (pruefen($text1,$text2)) {
echo "aaa";
} else {
echo "bbb";
}
Das ist viel dynamischer, da du den Text, der ausgegeben werden soll, immer unabhängig von der Funktion definieren kannst.
 
Warum das Rad neu erfinden?!
Schaut euch mal die Funktion [phpf]array_intersect[/phpf] an.

Kleines Beispiel:
PHP:
//gegeben:
$erlaubtegruppen =  "gruppe1 gruppe2 gruppe3"; 
$mitgliedindiesengruppen = "gruppe4 gruppe5 gruppe6"; 

//Umwandlung in Arrays:
$arr_1 = explode(' ', $erlaubtegruppen);
$arr_2 = explode(' ', $mitgliedindiesengruppen);

//Vergleich:
$check = array_intersect($arr_1, $arr_2);

if (!empty($check)) {
    //Zugriff gewährt
} else {
    //Zugriff verweigert
}

Wahrscheinlich performanter und das Ganze als Funktion zu schrieben, ist auch kein Problem.

PS: Ich hab allerdings nichts getestet und weiß nicht, was genau array_intersect() bei keiner Übereinstimmung zurückgibt.
 
super alles
ich liebe euch :-)

zuersthabe ich ca 10h damit verbracht die Variante von SiletWarrior zum laufen zu bringen, so wie ichs will

dann dann taucht ludz auf und gibt mir genau das, was ich will,
hab die Arbeit von 10h einfach mit dem neuen Script in 5min erfolgreich ersetzt

thx an luz:)
aber auch an silent warrior und marvin schmidt
 
Zurück