我有一个文本文件,其中包含以分号分隔的项目列表。我想为每个分号创建一个新的HTML tr。另外,我想在分号分隔的项目中使用逗号将项目分隔为列(td)。该表有三列。
如何用php完成?
答案 0 :(得分:2)
一种方法是:
$input = "1,2,3;4,5,6;7,8,9";
echo "<table>\n<tr><td>".str_replace(array(",", ";"), array("</td><td>", "</td></tr>\n<tr><td>"), $input)."</td></tr></table>";
结果:
<table>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>4</td><td>5</td><td>6</td></tr>
<tr><td>7</td><td>8</td><td>9</td></tr></table>
答案 1 :(得分:1)
首先拆分你的字符串...假设你有:
$str = 'text, something, value; another, extra, thing; string, content, data';
注意:您可以使用file_get_contents
读取文件。
现在,您可以使用explode获取部件:
$rows = explode(';', $str);
foreach ($rows as $row)
{
$cells = explode(',', $row);
//....
}
输出:
$rows = explode(';', $str);
foreach ($rows as $row)
{
echo '<tr>';
$cells = explode(',', $row);
foreach ($cells as $cell)
{
echo '<td>'.$cell.'</td>'
}
echo '</tr>';
echo "\n"; // just for presentation
}
那会产生:
<tr><td>text</td><td>something</td><td>value</td></tr>
<tr><td>another</td><td>extra<td><td>thing</td></tr>
<tr><td>string</td><td>content<td><td>data</td></tr>
从PHP 5.3及更高版本开始,您可以使用str_getcsv:
$rows = str_getcsv($str, ';');
foreach ($rows as $row)
{
echo '<tr>';
$cells = str_getcsv(',', $row);
foreach ($cells as $cell)
{
echo '<td>'.$cell.'</td>'
}
echo '</tr>';
echo "\n"; // just for presentation
}
使用str_getcsv
的优势在于它允许您指定eclosure
和escape
个字符。例如:
$str = '"text", "something", "value"; "another", "look: \"escape sequence\"";
enclosure
字符为"
,escape
字符为\
。
答案 2 :(得分:0)
$data = file("your_file.txt");
foreach ($data as $line) {
$trs = explode(";", $line);
foreach ($trs as $tr) {
echo '<tr>';
$tds = explode(",", $tr);
foreach ($tds as $td) {
echo '<td>';
echo $td;
echo '</td>';
}
echo '</tr>';
}
}
答案 3 :(得分:0)
使用explode
函数(http://www.php.net/explode)然后遍历结果并在表格中回显。
答案 4 :(得分:0)
使用explode()
。
$fn = fopen("test.txt","r") or die("fail to open file");
while($row = fgets($fn)) {
$content = explode( ";", $row);
echo '<tr>' . $content . '<tr />';
}
fclose( $fn );
答案 5 :(得分:0)
您可以使用file_get_contents,explode和implode轻松完成此操作:
$data = file_get_contents('file.txt');
$semi = explode(";", $data);
foreach($semi AS $row)
{
$td = explode(",", $row);
echo '<tr><td>' . implode('</td><td>', $td) . '</td></tr>';
}