CSV显示特定行

时间:2014-08-28 02:01:30

标签: php csv row

我是新来的,我正在尝试获取CSV的特定行,但实际上无法获得它,希望有人可以帮助我。

以下是我的CSV示例。

Aaron, Male, aaron@website.com
Arianne, Female, arianne@something.com
Bea, Female, bea@hello.com
Carlos, Male, carlos@website.com
Drake, Male, drake@website.com
Delilah, Female, del@hello.com
Erica, Female, erika@webisite.com
Flint, Male, flint@something.com

我想在我的档案中只显示从德雷克到埃里卡的一行。

以下是我的代码示例

 <?php
echo "<html><body><table BORDER=1, WIDTH=1200px>\n\n";
$f = fopen("Senter code hereample.csv", "r");
while (($line = fgetcsv($f)) !== false){
        echo "<tr>";
        foreach ($line as $cell) {
                echo "<td>" . htmlspecialchars($cell) . "</td>";
        }
        echo "</tr>\n";
}`enter code here
fclose($f);


echo "\n</table></body></html>";
?>

2 个答案:

答案 0 :(得分:1)

<?php
echo "<html><body><table BORDER=1, WIDTH=1200px>\n\n";
$f = fopen("file.csv", "r");
$i = 0;
while (($line = fgetcsv($f)) !== false){
    $i ++;
    echo "<tr>";

    foreach ($line as $cell) {
        if ($i==5 ||$i==6||$i==7)
        echo "<td>".$i.' - '. htmlspecialchars($cell) . "</td>";
    }
    echo "</tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
?>

经过测试和工作。

答案 1 :(得分:1)

在这个你要展示Drake,Delilah和Erica的具体例子中,你可以这样做:

$csv_lines = file('yourcsv.csv');

echo $csv_lines[4]; // Drake, Male, drake@website.com
echo $csv_lines[5]; // Delilah, Female, del@hello.com
echo $csv_lines[6]; // Erica, Female, erika@webisite.com

如果您的CSV是动态的,并且您想搜索这些名称而不是按照确切的行号引用它们,这可能是更好的方法,您可以执行以下操作:

$csv_lines = file('yourcsv.csv');

// Filter out anything that isn't the right first name
$csv_lines = array_filter($csv_lines, function($value) {
    /// Split up the line and trim each result
    $line_bits = array_map('trim', explode(',', $value));
    // If the first name is in your array, return this value otherwise strip it
    return in_array($line_bits[0], array('Drake', 'Delilah', 'Erica'));
});

然后返回数组转储:

Array
(
    [4] => Drake, Male, drake@website.com
    [5] => Delilah, Female, del@hello.com
    [6] => Erica, Female, erika@webisite.com
)

注意:使用file()是一种快速简便的方法,可以将文件读入数组,但如果您的文件很大,则不应该使用它作为整个文件需要在解析之前加载到内存中。在这种情况下它是合适的,但是应该逐行接近大量文件。

这些例子中的{p> Here's a demo。 (注意: file()在此示例中用新行代替explode()