0

下面的 php 代码从 .csv 文件中提取数据并生成 HTML 表格。它工作正常。我想知道是否可以在 html 表中嵌入一些图标,例如与 csv 文件中的某些特定单词(例如:red、green)相对应的红点或绿点(reddot.gif、greendot.gif)。

换句话说,当在 csv 文件中的特定列(例如:第 3 列)中出现红色或绿色时,应该在生成的 html 文件中出现 reddot.gif 或 greendot.gif。

提前致谢。垫

<?php
$row = 1;
if (($handle = fopen("example.csv", "r")) !== FALSE) {
 while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    if ($row == 1) {
        echo '<tr>';
    }else{
        echo '<tr>';
    }

    for ($c=0; $c < $num; $c++) {

        if(empty($data[$c])) {
           $value = "&nbsp;";
        }else{
           $value = $data[$c];
        }
        if ($row == 1) {
// ------------- head row --------
            echo '<td style="border-top: 1px solid rgb(111,180,224); border-left: 1px solid rgb(111,180,224); border-bottom: 1px solid rgb(111,180,224);"  align="left" bgcolor="#0066cc" height="36" valign="middle" ><b><font color="#ffffff" size="2">&nbsp;&nbsp;'.$value.'&nbsp;&nbsp;</font></b></td>';
        }else{

// ------------- Generic row -------
            echo '<td style=" border-bottom: 1px solid rgb(111,180,224);" sdval="9" sdnum="1040;" align="left" bgcolor="#ffffff" height="25"  valign="middle"><font color="#000000" size="2">&nbsp;&nbsp;'.$value.'&nbsp;&nbsp;</font></td>';
        }
    }

    if ($row == 1) {
        echo '</tr>';
    }else{
        echo '</tr>';
    }
    $row++;
}

echo '</tbody></table>';
echo '</center>';   
fclose($handle);
}
?>
4

2 回答 2

2

在任何循环之外声明这个函数,就在 if 的开头,甚至在脚本的开头或结尾:

function img($img){ return "<img src='{$img}dot.gif'/>";}

这在其他方面:

$value = preg_replace(array('/red/i', '/green/i'), array(img('red'), img('green')), $data[$c]);

如果您需要更多颜色,只需按照逻辑将它们添加到 preg_replace 内的两个数组中。

如果您需要为图像添加属性,请在声明的函数中添加它们。

希望这对你有用

于 2013-04-23T08:49:59.423 回答
0

请试一试。

    if(empty($data[$c])) {
       $value = "&nbsp;";
    }else{
       $value = $data[$c];
       switch(strtolower(trim($value))){
       case 'green': $value = '<img src="greendot.gif" '
                             .'alt="green" height="32" width="32">';
                             break;
       case 'red':   $value = '<img src="reddot.gif" '
                             .'alt="red" height="32" width="32">';
                             break;
       // you can add other cases here like blue, triangle etc :)
       }
    }
于 2013-04-23T08:14:09.337 回答