2016-12-15 66 views
0

我有隨機ID發生器,可以從1至6個類別,有多個條目具有的任何地方 - 參見實施例製作列數據從隨機陣列的URL鏈接生成html表

$ranGen = "IDENTIFIER | c07-8b93-49e4-991b-8213ea2b1| e8085-ded7-43ab-85127fe23f90bc|" ; 

$ranGen = "IDENTIFIER | MULTITENANT | c0407-8b93-49e4-991b-8213ea1b1| y | e808c5-ded7-43ab-858d-127f90bc| y|" ; 

$ranGen = "IDENTIFIER | MULTITENANT | REGISTERID | c0347-8b93-49e4-991b-8213921b1| y | 1700011| e87fc5-ded7-43ab-858d-1273f90bc| y | 1700012|" ; 

我已創建使用陣列的HTML表並爆炸以獲取表格行和表格數據。

這裏是我的那個表的代碼snipit

<?php 
    echo '<table>'; 
    $lines = explode("\n", $ranGen); 
    foreach ($lines as $line) { 
    $pieces = explode("|", $line); 
    if(trim($line) !=="") { 
    echo '<tr>' . "\n"; 
    foreach ($pieces as $piece) { 
    echo '<td>' . trim($piece) . '</td>' . "\n"; 
    } 
    } 
    echo '</tr>' . "\n"; 
} 
echo "</table>"; 
?> 

我想什麼來完成作爲超鏈接正在列「REGISTERID」中的所有數據(A HREF =「URL」>註冊ID 1700011)在桌子裏面?當我永遠不知道我是否會以列的形式返回寄存器ID時,可以這樣做嗎?

+0

返回的數據是否包含第一行的列名?如果是這樣,那麼你可以檢測到這個列,並在內容周圍添加超鏈接標記。如果你沒有得到列標題,那麼你可能會陷入困境,除非該列中的數據總是處於非常具體的可檢測格式,而不能與任何其他列混淆。 – ADyson

+0

是的,返回數據總是包含第一行中的列名。 – ecwarrior

+0

ok,所以當你處理第一行時,檢查列名,記錄它出現在哪個列索引(如果有的話),然後當你處理剩下的行時,當你到達該索引時'foreach($ pieces as $ piece)'loop),將'$ piece'文本包裝在合適的超鏈接中。 – ADyson

回答

0

類似這樣的事情可以做到這一點 - 您需要根據第一行中的列名稱,然後在隨後的行中,確定REGISTERID列是否存在,當您到達該索引時,將該項目包裝在合適的超鏈接。

這沒有測試,但希望如果它不能正確工作,至少你得到的一般想法。我也修改了一下,以便它生成更好的表格HTML。

<?php 
    $strHTML = '<table>'; 
    $rows = explode("\n", $ranGen); 
    $regColIndex = null; //this will hold the index of the registerID column, if any 

    //loop through the rows 
    for ($rowCount = 0; $rowCount < count($rows); $rowCount++) 
    { 
    if (trim($rows[$rowCount]) != "") 
    { 
     $columns = explode("|", $rows[$rowCount]); 

     if ($rowCount == 0) $strHTML .= "<thead>"; 
     if ($rowCount == 1) $strHTML .= "</thead><tbody>"; 
     $strHTML = "<tr>"; 

     //loop through the columns 
     for ($colCount = 0; $colCount < count($columns); $colCount++) 
     { 
     $isRegCol = false; //this will hold whether current column is the REGISTERID column 
     if ($rowCount == 0) 
     { 
      //first row contains headings, try and detect the REGISTERID column 
      if (trim($columns[$colCount]) == "REGISTERID") $regColIndex = $rowCount; 
      $strHTML .= "<th>"; 
     } 
     else 
     { 
      //all other rows contain data, check if it's the REGISTERID column 
      if ($colCount == $regColIndex) $isRegCol = true; 
      $strHTML .= "<td>"; 
     } 

     //now display the content 
     if ($isRegCol == true) $strHTML .= "<a href='http://www.example.com'>".trim($line[$lineCount])."</a>"; 
     else $strHTML .= trim($line[$lineCount]); 

     if ($rowCount == 0) $strHTML .= "</th>"; 
     else $strHTML .= "</td>"; 
     } 

     $strHTML .= "</tr>"; 
    } 
    } 

    $strHTML .= "</tbody></table>"; 
    echo $strHTML; 
?> 
+0

感謝這個例子。我會在週末添加這個來測試它。 – ecwarrior