我允许上传CSV,然后将其转换为数组:
$csvAsArray = array_map('str_getcsv', file($results['full_path']));
上面的代码将产生如下内容:
array(127) {
[0]=>
array(3) {
[0]=>
string(4) "Name"
[1]=>
string(5) "Email"
[2]=>
string(9) "Something"
}
[1]=>
array(3) {
[0]=>
string(3) "dfg"
[1]=>
string(24) "something@something.com"
[2]=>
string(2) "34"
}
[2]=>
array(3) {
[0]=>
string(3) "dfg"
[1]=>
string(23) "something@something.com"
[2]=>
string(2) "34"
}
我无法保证CSV的结构,这就是我无法查找特定列的原因。所以我可以循环数组,例如。
foreach($csvAsArray as $csvData) {
var_dump($csvData);
}
如何从此阵列中提取所有有效的电子邮件地址?
答案 0 :(得分:2)
作为循环的替代:
$.ajax({
type: 'GET',
url: '/webapi/namespace/LoadCities',
contentType: "application/json; charset=utf-8",
dataType: 'json'
}).done(function(data) {
var html = '<ul>';
jQuery.each(data, function (index, item) {
html += "<li>item.cityId + " " + item.cityName</li>";
html += '</ul>';
$(<some-element-selector>").html(html);
});
答案 1 :(得分:1)
遍历每个值并检查它是否是有效的电子邮件地址:
$emails = array();
foreach($csvAsArray as $csvData) {
foreach($csvData as $csvValue){
// If it isnt a valid emailaddress, this filter_var returns false
if(filter_var($csvValue, FILTER_VALIDATE_EMAIL)){
$emails[] = $csvValue;
}
}
}
var_dump($emails);
答案 2 :(得分:-1)
'"><script>alert(1);</script>"@test.com'
此字符串根据FILTER_VALIDATE_EMAIL有效,因此不建议您信任这些值。
试试这个: https://stackoverflow.com/a/13719991/4007002
或者这更好(也许是目前最好的方法): https://stackoverflow.com/a/1903368/4007002
值得一提的是,FILTER_VALIDATE_EMAIL也在内化域名上失败,因此它不符合RFC。