2013-03-29 119 views
0

我寫一個PHP網頁 - 我做了一個非官方的API來我的大學的學生管理軟件。它爲我(在另一臺服務器上)提供了一系列所有學生和他們的主要教室。驗證是否字符串數組

一切正常,除了一個事實,即老gradtuated的學生也從我的捲曲API出口。我有20個(或多個)值是唯一應該解析的值。

太謝謝你了!


更新! 這是一個完整的腳本的輸出示例:

{"id":"test1","name":"Test - 1w"}, {"id":"test2","name":"Testo - 2w"}, {"id":"IAmOdd","name":"I was in college last year - 14"} 

的迴響輸出的腳本是

{\"id\":\"$domid\",\"name\":\"$domout - $klasse\"},"); 

我又wan't刪除帖子的最後誰擁有$ Klasse的值不在陣列$教室中。


FINAL SOULUTION

我落得這樣做是這樣的:

if (preg_match("/1a|1b|1c|1d|1e|1u|1s|1y|1x|1w|2a|2b|2c|2d|2e|2u|2s|2y|2x|2w|3a|3b|3c|3d|3e|3u|3s|3y|3x|3w/", $row['navn'])) { 
$ok = 1; } 
if ($ok == 1) { 
    echo utf8_encode("{\"id\":\"$domid\",\"name\":\"$domout - $klasse\"},"); 
} 

這就是我對驗證過程現在:

$classrooms = array('1a','1b','1c','1d','1e','1u','1s','1y','1x','1w','2a','2b','2c','2d','2e','2u','2s','2y','2x','2w','3a','3b','3c','3d','3e','3u','3s','3y','3x','3w'); 
foreach ($classrooms as $bad) { 
if (strpos($mainclassroom, $bad) !== false) { 
     $allow = 0; 
} 
else { 
     $allow = 1;   
    } 
} 
+0

我實際上是在尋找與in_array完全相反的:) – MathyFoxy

+0

您可以通過使用「== false」或oder只是一個「!」來輕鬆地顛倒我們的「if」語句中的in_array函數。 ...'如果(in_array($ needle,$ haystack)== false)'' –

+0

如果in_array()幫助他在數組中匹配某些字符串段的值,它將如何提供幫助? –

回答

0

我會可能在這裏使用array_filter函數。

$filtered_classrooms = array_filter($classrooms, function($value) use $mainclassroom { 
    return (strpos($mainclassroom, $value) === false); 
}); 
0

所以,你實際上有一個單詞列表,不應該是輸入字符串的一部分。然後,正則表達式將是最方便的:

$bad = preg_match('/1[a-x]|2[a-x]|3a|3b|3c|3d/', $mainclassroom); 

當然你也可以列出所有類別單獨,而不是用信範圍。或者從你的不良單詞列表中用implode("|", $array)作出清單。

與您的代碼的問題但是僅僅是$allow=變量的覆蓋在if/else語句上在foreach的每個運行。

+0

耶!有效!非常感謝! :) – MathyFoxy

相關問題