私はデータ行を持つcsvファイルを持っています。各行は可変数の値を持つことができます。 ファイルの各行に特殊文字や間違った値があるかどうかを調べたい場合は、その行をプロセス全体からスキップします。 は、だからここに私のコードです:ここfilter_var_valueを使用して1つの正規表現フィルタを持つインデックス付き配列をフィルタリングします。
<?php
if (($handle = fopen('file.csv', "r")) !== false) {
while (($line = fgetcsv($handle, 1024, ";")) !== false) {
$keys = array('key');
foreach($line as $value){
$arr[] = array_fill_keys($keys,$value);
}
$args = array('filter' => FILTER_VALIDATE_REGEXP,
'options' => array('regexp' => '/[a-zA-Z0-9_:.()\s-\/]*/'),);
$result = filter_var_array($arr,$args);
var_dump($result);
}
}
fclose($handle);
?>
私の問題は、値の配列として行は、キーなしで、インデックス付きの配列であることである、と私は、キーを記入してみましたが、私はまだありません良い結果が得られ、値はフィルタリングされません。
:私はoptions
を提供する必要がありますので
filter_var_array($arr,FILTER_VALIDATE_REGEXP);
: 私の第二の問題は、私はすべての値に1つのフィルタを適用することで、単にこれを行うこのフィルタは正規表現であるので、私はカント
PHP Warning: filter_var_array(): 'regexp' option missing
このような何かがeather動作しません:
filter_var_array($line,FILTER_VALIDATE_REGEXP,[ 'options' => array('regexp' => '/[a-zA-Z0-9_:.()\s-\/]*/')]);
filter_var_arrayのパラメータは2つの配列とboolean型でなければなりませんので:
PHP Warning: filter_var_array() expects parameter 3 to be boolean
だから、総括する:
で一つのフィルターを使用してこのファイルをフィルタリングする方法filter_var_array
?- もしそれが不可能ならば、ファイル 全体を解析し、内容が正規表現と一致するかどうかを確認する良い方法はありますか?
キーを作成し、多分、フィルタ・アレイのためにそれらを渡しますか? –
これは私が上記で試したことです、foreachループで。 @u_mulder – Somar