【发布时间】:2015-05-04 23:49:58
【问题描述】:
在一次学校作业中,我使用 PHP 为我所在城市的一个虚构的太空博物馆建立了一个网站。它有一个数据包含和数据咨询系统,但是我有一个咨询问题我想知道如何解决:如何从文件中删除最后一个换行符?
数据包含
在站点的限制区域,我有一个 HTML5 表单,其中包含 5 个字段(姓名、地址、电话号码、性别和参观过的展览),它通过 POST 方法将数据发送到 PHP 中的一个函数,该函数将其写入使用fwrite命令给定txt文件:
fwrite ($pointer, "$name | $addres | $telephone | $sex | $exhibitions " .PHP_EOL);
如您所见,它将表单中输入的数据以及换行符写入一个 txt 文件。指针是fopen用来打开我需要工作的文件的变量。输出示例:
马尔西奥·阿吉亚尔 |贝尔米罗布拉加街 | 1234-5678 |中号 |太阳系的行星
乔安娜托拜厄斯 |桑托斯杜蒙大道 | 8765-4321 | F |黑洞,卫星
资料咨询
还有一个咨询系统。它有一个循环,一直运行到文件结束。在这个循环中,有一个名为$buffer 的变量,每次获取一行txt 文件。然后是exploded 创建一个名为$lines[$counter] 的数组。为了很好地打印它,我使用array_combine 将另一个数组($keys)上的字段名称连接到$lines[$counter] 中写入的值,并将其归因于$combined[$counter]。然后循环结束,我在<pre></pre> 中使用print_r 来查看写入$combined 的数据,同时保留HTML 否则会忽略的空格和中断。代码如下:
$keys = array ("Name", "Address", "Telephone", "Sex", "Visited exhibition");
for ($counter=0;!feof($reader);$counter++){
$buffer = fgets($reader);
$lines[$counter] = explode(" | ", $buffer);
$combined[$counter] = array_combine($keys, $lines[$counter]);
}
echo "<pre>";
print_r($combined);
echo "</pre>";
输出示例:
Array ( [0] => Array ( [Name] => Márcio Aguiar [Address] => Belmiro Braga Street [Telephone] => 1234-5678 [Sex] => M [Visited exhibitions] => Planets of Solar System ) [1] => Array ( [Name] => Joana Tobias [Address] => Santos Dummont Avenue [Telephone] => 8765-4321 [Sex] => F [Visited exhibitions] => Black Holes, Satellites ) [2] => )
在这里您可以看到2 数组被创建为空白。这是由最后一行引起的,该行仅包含由上面的表单插入的换行符。我需要删除最后一个换行符,只有那个,但不知道如何。我想知道!不知道会导致执行到达array_combine 时出现错误,因为需要两个数组具有相同数量的元素,而2 为空白。这里的错误:
警告:array_combine():两个参数在第 60 行的 E:\Aluno\Documents\Wamp\www\trab_1\area_restrita\consulta.php 中的元素数量应相同
【问题讨论】: