使列数据成为随机数组生成的html表的url链接

时间:2016-12-15 14:44:20

标签: php html

我有随机id生成器,可以有1到6个类别,包含多个条目 - 参见示例

$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表,并使用explo来获取表行和表数据。

这是我的表格代码

<?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>";
?>

我想要完成的是制作专栏&#34; REGISTERID&#34;表格内的所有数据都是超链接(href =&#34; url&#34;&gt;注册ID 1700011)?当我不知道我是否会将寄存器ID作为列返回时,可以这样做吗?

1 个答案:

答案 0 :(得分: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;
?>