如何拆分@符号上的电子邮件并显示在两个 table 单元格中?

How to split an email on @ symbol and display in two table cells?

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

代码:

<!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>

爆炸后 @@ 之后有两个值,这就是为什么要打印两次值的原因

试试这个

<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>
echo "<tr>";
foreach ($hello as $value)
{
        echo "<td>$value</td>";
}
echo "</tr>";

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

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

只打印$value

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

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

编辑;您似乎想要不同列中的电子邮件部分。

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

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

 echo "<tr>";

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

 echo "</tr>";

您不需要循环,只需分解值即可:

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

或者更简单,将@符号替换为</td><td>

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

Demo Link