我有 4 列的 .csv 文件。删除与第一列的 id 相同的行的最简单方法是什么?这是我卡住的地方:
if($_GET['id']) {
$id = $_GET['id'];
$file_handle = fopen("testimonials.csv", "rw");
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1024);
if ($id == $line_of_text[0]) {
// remove row
}
}
fclose($file_handle);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,数据库不是一种选择。
我使用此代码从CSV文件中获取列数:
$this->dummy_file_handler = fopen($this->config['file'],'r');
if ($dataset =fgetcsv($this->dummy_file_handler))
{
$this->number_of_columns = count($dataset);
}
Run Code Online (Sandbox Code Playgroud)
它工作正常除非文件是使用Excel for Mac 2011导出的,因为新行字符是 经典Mac(CR),fgetcsv它无法识别.

如果我手动将换行符从Classic Mac(CR)更改为Unix(LR),那么它可以工作,但我需要将其自动化.
如何fgetcsv识别经典Mac(CR)新行字符?
我有这个数组与机场代码和城市名称(约3500行).
code,city
"Abilene, TX ",ABI
"Adak Island, AK ",ADK
"Akiachak, AK ",KKI
"Akiak, AK ",AKI
"Akron/Canton, OH ",CAK
"Akuton, AK ",KQA
"Alakanuk, AK ",AUK
"Alamogordo, NM ",ALM
Run Code Online (Sandbox Code Playgroud)
我需要将该文件转换为php数组.到目前为止这是我的代码:
if(($handle = fopen('test.csv', 'r')) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ',', '"')) !== FALSE) {
echo '<pre>';
print_r($data);
echo '</pre>';
}
fclose($handle);
}
Run Code Online (Sandbox Code Playgroud)
虽然我正在设置fgetcsv函数的分隔符和封闭字符,但是我得到了这个结果:
Array
(
[0] => code
[1] => city
"Abilene
[2] => TX "
[3] => ABI
"Adak Island
[4] => AK "
[5] => ADK
"Akiachak …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种非常快速的方法来读取csv文件.我的数据结构如下所示:
timestamp ,float , string ,ip ,string
1318190061,1640851625, lore ipsum,84.169.42.48,appname
Run Code Online (Sandbox Code Playgroud)
我正在使用fgetcsv将这些数据读入数组.
问题:表现.脚本必须定期读取(和处理)超过10,000个条目.
我的第一次尝试非常简单:
//Performance: 0,141 seconds / 13.5 MB
while(!feof($statisticsfile))
{
$temp = fgetcsv($statisticsfile);
$timestamp[] = $temp[0];
$value[] = $temp[1];
$text[] = $temp[2];
$ip[] = $temp[3];
$app[] = $temp[4];
}
Run Code Online (Sandbox Code Playgroud)
我的第二次尝试:
//Performance: 0,125 seconds / 10.8 MB
while (($userinfo = fgetcsv($statisticsfile)) !== FALSE) {
list ($timestamp[], $value[], $text, $ip, $app) = $userinfo;
}
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
我有一个大的csv,我想解析并插入到我的数据库中.我有这个PHP:
$target = '../uploads/'.$f;
$handle = fopen($target, "r");
$data = fgetcsv($handle, 0, ",");
$rows = array();
while ($data !== FALSE) {
$rows[] = $data;
}
fclose($handle);
if (count($rows)) {
foreach ($rows as $key => $value) {
echo $value;
}
}
Run Code Online (Sandbox Code Playgroud)
每次我尝试运行我的脚本时都会收到此错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 35 bytes)
Run Code Online (Sandbox Code Playgroud)
任何想法如何做到这一点?
是否可以进行curl,访问URL和结果作为文件资源?喜欢fopen怎么做.
我的目标:
我的阻挠:fopen被禁用了
我的一大堆代码(fopen)
$url = "http://download.finance.yahoo.com/d/quotes.csv?s=USDEUR=X&f=sl1d1t1n&e=.csv";
$f = fopen($url, 'r');
print_r(fgetcsv($f));
Run Code Online (Sandbox Code Playgroud)
然后,我正在尝试卷曲.
$curl = curl_init();
curl_setopt($curl, CURLOPT_VERBOSE, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
curl_setopt($curl, CURLOPT_URL, $url);
$content = @curl_exec($curl);
curl_close($curl);
Run Code Online (Sandbox Code Playgroud)
但是,像往常一样.$ content已经返回一个字符串.
现在,curl有可能将其作为文件资源指针返回吗?就像fopen一样?使用PHP <5.1.x的东西.我的意思是,不使用str_getcsv,因为它只有5.3.
我的错误
警告:fgetcsv()期望参数1是资源,给定布尔值
谢谢
我想从导入的文件中删除BOM,但它似乎不起作用.
我试着preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $file);和一个str_replace.
我希望有人看到我做错了什么.
$filepath = get_bloginfo('template_directory')."/testing.csv";
setlocale(LC_ALL, 'nl_NL');
ini_set('auto_detect_line_endings',TRUE);
$file = fopen($filepath, "r") or die("Error opening file");
$i = 0;
while(($line = fgetcsv($file, 1000, ";")) !== FALSE) {
if($i == 0) {
$c = 0;
foreach($line as $col) {
$cols[$c] = utf8_encode($col);
$c++;
}
} else if($i > 0) {
$c = 0;
foreach($line as $col) {
$data[$i][$cols[$c]] = utf8_encode($col);
$c++;
}
}
$i++;
}
Run Code Online (Sandbox Code Playgroud)
-----------已
解决的版本:
setlocale(LC_ALL, 'nl_NL');
ini_set('auto_detect_line_endings',TRUE);
require_once(ABSPATH.'wp-admin/includes/file.php' );
$path = get_home_path();
$filepath …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用fgetCsv但由于某种原因它只是读取第一行.这是代码:
$fieldseparator = ",";
$lineseparator = "\r";
if(!file_exists($csvFile)) {
echo "<div id='error'>Cannot find uploaded file. Please try again</div>";
exit;
}
$file = fopen($csvFile,"r");
if(!$file) {
echo "<div id='error'>Error loading CSV file</div>";
exit;
}
$size = filesize($csvFile);
if(!$size) {
echo "<div id='warning'>File is empty</div>";
exit;
}
$query = "";
$content = fgetcsv($file,$size,$lineseparator);
fclose($file);
foreach($content as $data) {
$values = explode($fieldseparator,$data);
$query[$i] = "('".implode("','",$values)."')";
}
Run Code Online (Sandbox Code Playgroud)
这只输出一行.这是CSV文件:
TSE-P01,1,WO47653897,RM,EcoQuiet,1
TSE-P02,1,WO47653898,RM,EcoQuiet,1
TSE-P03,1,WO47653899,RM,EcoQuiet,1
TSE-P04,1,WO47653900,RM,EcoQuiet,1
TSE-P05,1,WO47653901,RM,EcoQuiet,1
TSE-P06,1,WO47653902,RM,EcoQuiet,1
TSE-P07,1,WO47653903,RM,EcoQuiet,1
TSE-P08,1,WO47653904,RM,EcoQuiet,1
Run Code Online (Sandbox Code Playgroud)
任何想法为什么会这样?
我正在构建一个简单的商店系统,它从csv文件生成的数组中获取其产品.
我的csv如下:
pid;name;color
11149;Miro;"schwarz;weiß;blau;rot;gelb"
11004;FritzHansen;"buche;nussbau;schwarz;weiß;blau;hellblau;rot;grün;gelb;retro"
Run Code Online (Sandbox Code Playgroud)
我正在使用以下脚本
if (($handle = fopen('_products.csv', 'r')) === false) {
die('Error opening file');
}
$headers = fgetcsv($handle, 256, ';');
$_products = array();
while ($row = fgetcsv($handle, 256, ';')) {
$_products[] = array_combine($headers, $row);
}
fclose($handle);
Run Code Online (Sandbox Code Playgroud)
产生这个数组:
Array
(
[0] => Array
(
[pid] => 11149
[name] => Miro
[color] => schwarz;weiß;blau;rot;gelb
)
[1] => Array
(
[pid] => 14215
[name] => 1800
[color] => schwarz;anthrazit
)
[2] => Array
(
[pid] => 11004
[name] => FritzHansen …Run Code Online (Sandbox Code Playgroud) 我需要帮助阅读文件夹和打开/输出csv数据,我已经使用了其他人写的例子,但没有一个对我有用.
我目前拥有的是这个,但它不输出文件:
$files = scandir($PathToCreate.$version."/"); //scan the folder
foreach($files as $file) { //for each file in the folder
//The following is another example I found but does not output anything I just need to open each file and be able to output / target specific data
$csv = array();
$lines = file($file, FILE_IGNORE_NEW_LINES);
foreach ($lines as $key => $value)
{
$csv[$key] = str_getcsv($value);
}
print_r($csv)
}
Run Code Online (Sandbox Code Playgroud)