2013-04-23 52 views
0

下面的php代碼從.csv文件中提取數據並生成一個HTML表格。它工作正常。我想知道是否可以在csv文件中嵌入一些圖標,例如紅色或綠色圓點(reddot.gif,greendot.gif)與某些特定單詞(例如:紅色,綠色)的對應關係。如何在從csv獲取的HTML表格中嵌入圖標?

換句話說,當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); 
} 
?> 

回答

2

聲明此功能之外的任何環,就在的,如果,甚至在開始或腳本的結尾開始:

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

這正好在else:

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

如果你需要更多的顏色只要按照邏輯,並在其中添加兩個數組在preg_replace中。

如果您需要向圖像添加屬性,請將其添加到聲明的函數中。

希望它爲你工作

+0

好吧,它的工作原理!但是,如果單詞「綠色」或「紅色」是普通文本的一部分,它會在單詞內顯示img:/ – mattew 2013-04-23 09:06:10

+0

,那麼您應該只將代碼應用到您希望的列。可以說這是第3列,在for循環中:if($ c == 2){value replacement for images code} – aleation 2013-04-23 09:12:27

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 :) 
     } 
    } 
+0

的任擇議定書沒有規定,如果這些領域將只包含與顏色的話,你應該,至少修剪$值,作爲逗號分隔值通常有一個空白。如果這是一個混合了其他詞的單詞,則應該使用REGEX。 – aleation 2013-04-23 08:16:31

+0

@aleation如何過度複雜的事情?讓我們添加一個解析器然後;)...無論如何,感謝修剪技巧,csv中的前導和尾隨空格是常見的。我在這裏呈現的答案既不準確也不準確,因爲我無法知道OP這邊提供的數據。即:圖像的路徑被省略並且大小是任意的。這裏的動機是展示模式......感謝您的關注。 – Ihsan 2013-04-23 08:20:26

+0

它確實無法正常工作。不指定列的想法並不差,所以我可以自由使用多個圖標而不需要修改代碼,但除此之外,我嘗試了代碼並沒有給我希望的結果:/ – mattew 2013-04-23 08:40:11

相關問題