【问题标题】:How to split an email on @ symbol and display in two table cells?如何在@符号上拆分电子邮件并显示在两个表格单元格中?
【发布时间】:2017-08-11 07:39:05
【问题描述】:

我想分别显示通过explode() 获得的值。但问题是我的表格显示了两个完全相同的值。我不知道背后的原因,在 StackOverflow 上彻底搜索,但找不到我的答案。

代码:

<!DOCTYPE html>
<html>
    <head>
        <title>PHP3</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
        <link rel="http://netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    </head>
    <body>
        <div class="container">
            <table class="table table-bordered">
                <thead>
                    <tr>
                        <th>User Name</th>
                        <th>Domain Name</th>
                    </tr>
                </thead>
                <tbody>
                    <?php
                    $str = "naveen.dharni@gmail.com";
                    $hello = explode("@",$str);
                    foreach ($hello as $value)
                    {
                        echo "<tr>";
                            echo "<td>$hello[0]</td>";
                            echo "<td>$hello[1]</td>";
                        echo "</tr>";
                    }
                    ?>
                </tbody>
            </table>
        </div>
    </body>
</html>

【问题讨论】:

  • 你需要使用$value而不是$hello[0]
  • 您在数据数组上有一个循环,然后在每次迭代中再次打印所有数组内容。要么使用循环,要么直接删除循环并使用 4 个 echo 语句。
  • 将字符串转换为数组然后再转换回字符串是多余的,只需将其保留为字符串并使用单个函数调用进行准备——不需要额外的变量,也不需要 foreach 循环。跨度>

标签: php html email delimiter tablecell


【解决方案1】:
echo "<tr>";
foreach ($hello as $value)
{
        echo "<td>$value</td>";
}
echo "</tr>";

基本上你需要在foreach之前设置TR标签。

其次在foreach 中,$value 在迭代中包含两个值,因此不需要打印$hello[0]

只需打印$value

【讨论】:

    【解决方案2】:

    在你爆炸之后有两个值在@ 之前和@ 之后,这就是为什么你要打印两次你的值

    试试这个

    <table class="table table-bordered">
                    <thead>
                    <tr>
                        <th>User Name</th>
                        <th>Domain Name</th>
                    </tr>
                    </thead>
                    <tbody>
                    <?php
                    $str = "naveen.dharni@gmail.com";
                    $hello = explode("@",$str);
                        echo "<tr>";
                        echo "<td>$hello[0]</td>";
                        echo "<td>$hello[1]</td>";
                        echo "</tr>";
                    ?>
                    </tbody>
                </table>
    

    【讨论】:

    • 请仔细检查代码,它在一个&lt;tr&gt;&lt;/tr&gt;里面,所以它会单行显示
    【解决方案3】:

    您的循环显示您从explode() 获得的数组的每个部分。在您的循环中,您使用$hello,这就是数组本身。

    您需要像这样回显实际的$value

     echo "<tr>";
    
     foreach ($hello as $value) {
          echo "<td>$value</td>";
     }
    
     echo "</tr>";
    

    【讨论】:

      【解决方案4】:
      echo "<tr><td>";
      foreach ($hello as $value)
      {       
         echo "<td>" . $value . "</td>";
      }
      echo "</tr>";
      

      值是数组的每一部分。
      所以每次循环进行时,$value 都会改变。

      编辑;看来您希望将电子邮件部分放在不同的列中。

      【讨论】:

        【解决方案5】:

        您不需要循环,只需将值内爆:

        $str = "naveen.dharni@gmail.com";
        $hello = explode("@",$str);
        echo '<tr><td>',implode('</td><td>',$hello),'</td></tr>';
        

        或者更简单,将@符号替换为&lt;/td&gt;&lt;td&gt;

        $str = "naveen.dharni@gmail.com";
        echo '<tr><td>',str_replace('@','</td><td>',$str),'</td></tr>';
        

        Demo Link

        【讨论】:

          猜你喜欢
          • 2018-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-08
          • 1970-01-01
          • 1970-01-01
          • 2023-03-31
          相关资源
          最近更新 更多