如何拆分@符号上的电子邮件并显示在两个 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>';
我想单独显示通过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>';