php - PHP:如何计算 CSV 文件中无效电子邮件的数量
问题描述
我将 VueJS 前端的 csv 文件上传到 cakephp API。在这些 CSV 文件中有需要验证的电子邮件。但之后我的问题出现了,我想计算 CSV 文件中无效的电子邮件数量,然后将此值放入数据库中。
这是我的代码:我用“count()”进行了测试,但这不起作用,因为我认为我做错了。
public function upload()
{
// POST ?
$this->myMethodError(['post']);
// reading parameters
$uploadFileName = $this->request->getData('uploadFileName') ? $this->request->getData('uploadFileName') : '';
$uploadFile = $this->request->getData('uploadFile') ? $this->request->getData('uploadFile') : '';
// Uploaded with .csv extension ?
$uploadFileExtension = pathinfo($this->request->data['name'])['extension']; // .csv ?
if (!(in_array($uploadFileExtension, ['csv']))) {
$this->myError(['error' => 'Wrong File extension: ' . $uploadFileExtension . '. .csv expected.']);
}
//copy the file in a repertory with date
$destinationFile = TMP . "" . date("YmdHis") . "_annonceur_marque_campagne" . "." . $uploadFileExtension;
if (move_uploaded_file($uploadFile['tmp_name'], $destinationFile)) {
//---------------
// Read .CSV
//---------------
if (($handle = fopen($destinationFile, "r")) !== FALSE) {
//-------------------
// Reading datas
//--------------------
$numrow = 0;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$numrow++;
if (count($data) != 13) {
$this->myError(['error' => 'Structure de fichier invalide détectée ligne ' . $numrow]);
exit;
}
if ($numrow == 1) {
continue;
} // on saute les titres des colonnes
if($data[4] == "")
{
$this->myError(['error' => 'Le champs email est obligatoire. ligne ' . $numrow]);
exit;
}
}
//insert in database
$uploadTable = TableRegistry::get('Locationsets');
$upload = $uploadTable->newEntity();
if(!filter_var($data[4], FILTER_VALIDATE_EMAIL) === true){
$upload->nbr_errors_email = count(filter_var($data[4], FILTER_VALIDATE_EMAIL));
}
$upload->name = $uploadFileName;
$upload->csv_files_dir = $destinationFile;
if($uploadTable->save($upload)){
$uploadId = $upload->id;
} else {
$this->myError(['error' => 'Insert failed']);
}
// return in Json
$this->myOutput([$data]);
} else {
$this->myError(['error' => 'Reading csv file failed']);
}
} else {
$this->myError(['error' => 'Csv file upload failed']);
}
}
此代码在数据库中添加 1 但这不是我应该得到的结果。
希望你能帮忙。
编辑 :
内容示例$data
解决方案
推荐阅读
- r - R -- install_github 到底是做什么的?
- reactjs - 附加带有动态创建的输入字段的图像,无需重复
- postgresql - 内部连接的别名
- python - 排除名称中带有空格的整个目录
- javascript - 当同一行中的另一个单元格在 Javascript 中具有值时,验证一个单元格是否成为必需的
- excel - 拆分数据并使用 vba 进行比较
- python - 用奇怪的 html 抓取网站
- c# - 有效的 RegEx 不适用于 ASP.Net MVC 正则表达式属性
- mips - 谁能告诉我在这个 MIPS 代码中犯了什么错误?
- python - 导入错误:libopencv_hdf.so.3.3