2016-07-30 13 views
0

Ich weiß, dass Sie Arrays mit preg_replace verwenden können, aber ich muss 2 Arrays übereinstimmen. 1-Array ist mit verbotenen Zeichen und das andere ist mit den Variablen ich es möchte finden Grundsätzlich gilt:.Verwenden Sie Arrays in preg_match()

$invalidChars = array("#/#", "#\\#", "#'#", "#\"#"); 
$matchIn = array("var1" => $var1 , "var2" => $var2); 

Wenn ich die folgende ihnen passen:

if(preg_match($invalidChars, $matchIn)){ 
    echo "Invalid chars found"; 
    die(); 
}else{ 
    "No invalid chars"; 
    die(); 
} 

dann PHP wirft mich der folgende Fehler

Warning: preg_match() expects parameter 2 to be string, array given 

wenn es nicht möglich ist, mit 2-Arrays zu verwenden preg_match, wie ich überprüfen würde, wenn die Variablen eine oder mehrere der ungültigen charachters enthalten?

+0

Bitte versuchen Sie, diese zu verwenden, von Stackoverflow: http://stackoverflow.com/questions/8627334/how-to-search-in-an-array-with-preg- Übereinstimmung – Vyacheslav

Antwort

1

preg_match() kann nur Zeichenfolgen als Muster akzeptieren. Es gibt keinen Grund, Arrays zu unterstützen, da ein einziges Muster für reguläre Ausdrücke erstellt werden kann, um alle diese Zeichen zu finden.

$invalidChars = "#[/\\\\'\"]#"; 

Der zweite Parameter kann auch nur eine Zeichenfolge sein. In diesem speziellen Fall können Sie verketten nur die Saiten, sie alle zu testen, da Sie für einzelne Zeichen suchen:

if (preg_match("#[/\\\\'\"]#", implode('', $matchIn)) 
{ 
    ... 

Aber normalerweise würde man die Themen durch und sie durchlaufen müssen, um testen individuell:

foreach ($matchIn as $subject) 
    if (preg_match("#[/\\\\'\"]#", $subject)) 
    { 
     ... 
+0

Oh, ja, offensichtlich. Danke, aber was ist mit dem zweiten Array mit all meinen Variablen? Müsste ich jede Variable einzeln preg_matching – SirMaxime

+1

* "Aber normalerweise müssten Sie durch die Themen iterieren ..." *: Sie können 'preg_grep' http://php.net/manual/en/function.preg-grep verwenden .php –

+0

Um einen umgekehrten Schrägstrich in einer Musterzeichenfolge darzustellen, benötigen Sie 4 umgekehrte Schrägstriche. Sie können nur 3 Backslashes verwenden, wenn das nächste Zeichen nicht der zweite Teil einer Escape-Sequenz * ist (Sie können '\\\ '' schreiben, aber nicht '\\\ n') *. –

0

versuchen, diese funciton,

function validate($invalidChars,$matchIn){ 
    foreach($invalidChars as $invalidChar){ 
     if(preg_match($invalidChar, $matchIn)){ 
      echo "Invalid chars found"; 
      return; 
     } 
    } 
     echo "No invalid chars"; 
     return; 
}