PHP:Foreach循环导致输出有一个我不知道的额外符号';我不想要

PHP:Foreach循环导致输出有一个我不知道的额外符号';我不想要,php,Php,html标记导入两个不同的值。它们应该如下显示:value1:value2。 但它们显示为这样:value1:value2:。 我知道是什么导致了这个问题,但我不知道如何解决它,因为我只是一个PHP初学者 ?php $handle = fopen("text.txt", "a"); foreach($_POST as $variable => $value) { fwrite($handle, $value); fwrite($handle, ":"); } fclose

html
标记导入两个不同的值。它们应该如下显示:
value1:value2
。 但它们显示为这样:
value1:value2:
。 我知道是什么导致了这个问题,但我不知道如何解决它,因为我只是一个PHP初学者

?php
$handle = fopen("text.txt", "a");
foreach($_POST as $variable => $value) {
    fwrite($handle, $value);
    fwrite($handle, ":");
}

fclose($handle);
exit;
?

一种选择是将数据存储在一个数组中,并使用

另一种解决方案是将所有值合并到一个变量中,并使用
trim()
substr()
去除不需要的符号,然后将变量的值写入文件


此外,检查文件是否成功打开可能是明智的做法,这取决于您对保存的数据所做的操作,以避免XSS攻击。如果您计划回送它,请使用htmlEntes()。

一个选项是将数据存储在数组中,并将它们粘在一起

另一种解决方案是将所有值合并到一个变量中,并使用
trim()
substr()
去除不需要的符号,然后将变量的值写入文件


此外,检查文件是否成功打开可能是明智的,这取决于您对保存的数据所做的操作,以避免XSS攻击。如果您计划回送它,请使用htmlEntes()。

在foreach内的每个循环中,您都会添加一个值和冒号。一种选择是在添加值之前添加冒号,而不要在第一次运行时添加冒号。像这样:

<?php

    $first = true;
    $handle = fopen("text.txt", "a");

    foreach($_POST as $variable => $value) {

        if(!$first) {
            fwrite($handle, ":");
            $first = false;
        }
        fwrite($handle, $value);

    fclose($handle);

?>


@xorifelse的内爆解决方案在foreach内的每个循环中都很好,您可以添加一个值和冒号。一种选择是在添加值之前添加冒号,而不要在第一次运行时添加冒号。像这样:

<?php

    $first = true;
    $handle = fopen("text.txt", "a");

    foreach($_POST as $variable => $value) {

        if(!$first) {
            fwrite($handle, ":");
            $first = false;
        }
        fwrite($handle, $value);

    fclose($handle);

?>

@xorifelse的内爆解决方案也不错