首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中打开文件

问如何在php中打开文件
EN

Stack Overflow用户
提问于 2012-08-29 22:08:56
回答 3查看 138关注 0票数 2

我一直在寻找关于这个主题的问题,但没有得到我想要的东西。This is for C++,我需要类似的PHP。This is for including php files,我只想读一个CSV文件。

我有这个:

代码语言:javascript
复制
if(file_exists("data.csv")){
    echo "CSV file found";

    $csv_data = file_get_contents("data.csv"); 

    $lines = explode("\n", trim($csv_data));   

    $array = array();

    foreach ($lines as $line){
            $array[] = str_getcsv($line);

}else {echo "File not found";}

但我不想指定文件名--即通常加载/读取/打开文件。

这么做有什么简单的原因吗?没有任何意义,但是有人告诉我不要在PHP脚本中硬编码任何东西。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-29 22:22:18

如果您的脚本中可能没有硬编码的内容,则需要将这些硬编码的内容放入某种外部配置文件中。您必须将该配置文件的名称硬编码到您的bootstrap或应用程序中最先出现的任何文件中。加载配置后,在需要的地方提供配置数据。不将配置数据硬编码到代码中将允许您创建更多可重用的组件和代码,例如,CSV Reader可以读取任何CSV文件,而CSV Reader只能读取其中硬编码的一个特定CSV文件。

示例:

代码语言:javascript
复制
// config.php
<?php
return array(
    'csvFile' => '/path/to/file.csv',
    …
);

// bootstrap.php
<?php
$config = include '/path/to/config.php';
…

// someFile.php
<?php
include '/path/to/bootstrap.php';
$file = new SplFileObject($config['csvFile']);
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
   // Do something with values
}
票数 2
EN

Stack Overflow用户

发布于 2012-08-29 22:13:30

使用fgetcsv

代码语言:javascript
复制
if(file_exists("data.csv")){
    echo "CSV file found";
    $handle = fopen("data.csv", "r");
    if(!$handle) die("Could not open file!");
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
      $num = count($data);
      $row++;
      for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";
      }
    }
    fclose($handle); 

}else {echo "File not found";}
票数 3
EN

Stack Overflow用户

发布于 2012-08-29 22:12:52

将你的代码放入一个函数中...

代码语言:javascript
复制
function open_file($file_name)
{
    if (!file_exists($file_name))
    {
        return false;
    }

    $csv_data = file_get_contents($file_name);
    $lines = explode("\n", trim($csv_data));

    $array = array();
    foreach ($lines as $line)
    {
        $array[] = str_getcsv($line);
    }

    return $array;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12179871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档