1
有沒有一種方法可以用PHP的filter_input_array
過濾/清理多維POST數據?用PHP過濾多維POST filter_input_array
鑑於這將導致以下POST數據的表單:
$_POST[
'level1a' => [
'level2a' => [
'key1' => 'value1',
'key2' => 'value2'
],
'level2b' => [
'key1' => 'value1',
'key2' => 'value2'
]
],
'level1b' => [
'level2a' => [
'key1' => 'value1',
'key2' => 'value2'
],
'level2b' => [
'key1' => 'value1',
'key2' => 'value2'
]
]
]
我沒有看到一個方法來告訴filter_input_array
功能檢查數據的嵌套更深一層。似乎只有國旗FILTER_REQUIRE_ARRAY
,但沒辦法告訴它需要檢查哪個級別。
工作實例較少尺寸:
如果這只是一個不太嵌套組數據,這將是非常簡單的:
$args = array(
'level1a' => array(
'filter' => FILTER_SANITIZE_STRING,
'flags' => FILTER_REQUIRE_ARRAY
),
'level1b' => array(
'filter' => FILTER_SANITIZE_STRING,
'flags' => FILTER_REQUIRE_ARRAY
)
);
$form_data = filter_input_array(INPUT_POST, $args);
:
$_POST[
'level1a' => [
'level2a' => 'value1',
'level2b' => 'value2'
],
'level1b' => [
'level2a' => 'value1',
'level2b' => 'value2'
]
]
可以用過濾
但如何解決更多的嵌套數據呢?有沒有拆分/展平POST數據的方法?
您可能很容易編寫一個遞歸函數來對某些數據運行'filter_input_array',然後遞歸到內部數組。 – shevron
我現在正在處理類似的問題。我會讓你知道我想出了什麼。 –
我可能會嘗試工程我的HTML表單,以便它只創建標量和/或二維數組。由於'$ _POST'和'INPUT_POST'不一樣,扁平'$ _POST'對'INPUT_POST'沒有任何影響。從純粹的意義上說,我認爲你會想''_POST'離開它。我的建議是,如果可能的話,你會將你的HTML表格變平,而不是輸入源數組。是的,欺騙可以完成,但費用是多少?處理時間?保養?文檔?一旦你超越了兩個維度,PHP會將你留給自己的設備。 :)注意,沒有INPUT_FILES。 –