Array auf nicht erlaubten Inhalt Prüfen?

eperdemer

Mitglied
Nabend,

ich möchte gerne von"Array A" die Values Prüfen ob die ganz oder zum Teil in "Array B" stehen und wenn ja aus dem "Array A" entfernen.

Bin Schon seit Stunden am grübeln Aber mir ist keine Brauchbare Lösung eingefallen, hat vielleicht einer von euch eine Idee wie man das machen könnte?

Ich wäre Sehr dankbar für eure Hilfe.

Schönen Abend noch
ePeRDeMeR
 
Danke für die Schnelle Antwort, aber die Funktionen Prüfen So weit ich gesehen/ausprobiert habe nur dadrauf wenn die Inhalte übereinstimmen.

Ich möchte aber auch Einträge Entfernen die nur zum Teil Übereinstimmen.

PHP:
$not_array = array("xxx","yyy");

$value_array = array("xxx","yyy","xxxyyy","ok");

$array = array_diff($value_array,$not_array);
print_r($array);
alle Einträge die "xxx" und "yyy" enthalten sollen entfernt werden bzw. zurückgegeben, also dürfte nur "ok" im Array bleiben bzw. nicht zurückgegeben werden.
 
Ich bin mir sicher das man dass auch anders lösen kann.
Du müsstest nur ein paar Zeilen mehr posten.
 
Ich würde gerne Mehr Zeilen Posten das sind aber die Einzigen die mit der Prüfung was zu tun haben, hab schon überlegt das Array auszulesen und mit preg_match zu prüfen.

Im Grunde geht es darum bei Verlinkungen nicht gewollte Verlinkungen abzufangen, deswegen auch die Prüfung wenn nur ein Teil übereinstimmt. Um die Domain in der Verlinkung geht es nicht eher um die Seiten z.b. /index.php darf durch aber /exit.php darf nicht durch da "exit" im Array mit den verbotenen Strings steht.

Danke für deine Hilfe

edit://
PHP:
$not_array = array("xxx","yyy");

$value_array = array("xxx","yyy","xxxyyy","ok");

foreach($value_array AS $value){
  foreach($not_array AS $value2){
    echo preg_match("*".$value."*",$value2);
	}
  echo $value."<br>";
  }

$array = array_diff($value_array,$not_array);
print_r($array);
 
Zuletzt bearbeitet:
Bei in_array() wir aber auch auf die genaue übereinstimung geprüft.

PHP:
$not_array = array("xxx","yyy");

$value_array = array("xxx","yyy","xxxyyy","ok");

foreach($value_array AS $value){
  echo in_array($value,$not_array);
  echo $value."<br>";
  }

Oder war das Anders gedacht?

edit://

Komme der Lösung Schon Näher:

PHP:
$not_array = array("xxx","yyy");

$value_array = array("xxx","yyy","xxxyyy","ok");


foreach($value_array AS $value){
  $not_reg = "";
  $i = 0;
  foreach($not_array AS $value2){
	$i++;
 	$not_reg .= "".$value2."";
	if($i != count($not_array)){$not_reg .= "|";}
	}

  echo $not_reg = "/".$not_reg."/i";

  echo preg_match($not_reg,$value);
  echo ": ".$value."<br>";
  }

Jetzt ist nur die frage ob es noch eine Eleganter Methode dafür gibt?
 
Zuletzt bearbeitet:
Sorry, ich merk gerade selber das in_array das hier
PHP:
$a = "bced";
$b = array("abcedf");
hier false ausgibt.
Ich glaube mit preg_match auf dem besseren Weg ( wie du schon im Edit gezeigt hast ) ;)
 
Zurück