【问题标题】:PHP file_put_contents - How to organize the output?PHP file_put_contents - 如何组织输出?
【发布时间】:2021-01-10 07:26:59
【问题描述】:

我有以下代码:

file_put_contents("ceontent.txt", "Account: " . $_POST['callcenteragent'] . " Pass: " . $_POST['agentpassword'] . " IP: " . $ipaddress . " User-agent: " . $browser . " \n", FILE_APPEND);

输出将是:

Account: Michael Pass: Michaelpwd122@@ IP: 197.210.55.69
 User-agent: Mozilla/5.0 (Linux; Android 6.0; TECNO W5 Lite Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/68.0.3440.91 Mobile Safari/537.36 Instagram 150.0.0.33.120 Android (23/6.0; 320dpi; 720x1280; TECNO; TECNO W5 Lite; W5Lite; mt6580; en_US; 230877674) 

有点乱,我看不懂。

如何让它看起来像这样:

    ====================================================================================
    ====================================================================================
    Account: Michael
    Password: Michaelpwd122@@
    IP: 197.210.55.69
    User-Agent: Mozilla/5.0 (Linux; Android 6.0; TECNO W5 Lite Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/68.0.3440.91 Mobile Safari/537.36 Instagram 150.0.0.33.120 Android (23/6.0; 320dpi; 720x1280; TECNO; TECNO W5 Lite; W5Lite; mt6580; en_US; 230877674) 
    ===================================================================================
    ===================================================================================

我尝试添加“=====================”,但不知何故它没有放入内容。

有什么帮助吗?提前谢谢你。

【问题讨论】:

    标签: php output


    【解决方案1】:
    $separator = '===============================================';
    $data = [
        $separator,
        $separator,
        "Account: " . $_POST['callcenteragent'],
        "Pass: " . $_POST['agentpassword'],
        "IP: " . $ipaddress,
        "User-agent: " . $browser,
        $separator,
        $separator,
    ];
    
    file_put_contents("ceontent.txt", implode("\n", $data), FILE_APPEND);
    

    【讨论】:

    • 为了安全考虑下一个答案中的清洁建议。直接使用 $_POST 不是一个好习惯
    • 它工作得很好,感谢 Gabriel,但没有必要使用数组和连接。您可以将文本放入单个字符串变量中,例如 $text = "text\text 2";。实际上你用复杂的代码来复杂你的简单代码
    • 是的,我知道。我只是喜欢连接字符串的数组。我很好奇哪个更快(也许连接字符串)但数组解决方案看起来更好。并且更容易处理。如果需要。
    • @GabrielA.LópezLópez 最好的编码是简单的代码。没有必要将您的简单代码与您的编程语言的许多功能复杂化。实际上,您误导了 OP,如果他是编程世界的新手,也许他认为有必要使用数组进行连接。不管怎样,谢谢你的好意
    • @praser 不需要使用数组和implode 函数来连接字符串。您可以按照@amirali-esteki 使用.= 运算符的答案来执行此操作。同一件事的不同方式
    【解决方案2】:

    要在 html 中写新行,你应该使用 BR 标签或在关闭它们之后创建自己的新行的标签,例如 h( 1|2|3|4|5|6), p 和 ...

    但要在文件中写入换行符,您可以使用 \n 在文本中创建新行

    在php中你可以通过3种方式使用换行符:

    1:将您的文本放在双引号中并使用 \n 字符(例如其他语言):

    $text = "amirali esteki answered the user:\npra sar";
    echo('<pre>' . $text . '\</pre>');
    

    2:使用 chr 函数从数字生成单字节字符串。换行符的单字节数为十(10):

    $text = 'amirali esteki answered the user:' . chr(10) . 'pra sar';
    echo('<pre>' . $text . '\</pre>');
    

    3:使用 PHP 为新字符定义的 PHP_EOL 常量:

    $text = 'amirali esteki answered the user:' . PHP_EOL . 'pra sar';
    echo('<pre>' . $text . '\</pre>');
    

    关于你的代码:

    $text = '====================================================================================' . PHP_EOL;
    $text .= '====================================================================================' . PHP_EOL;
    $text .= 'Account: ' . $_POST['callcenteragent'] . PHP_EOL;
    $text .= 'Password: ' . $_POST['agentpassword'] . PHP_EOL;
    $text .= 'IP: ' . $ipaddress . PHP_EOL;
    $text .= 'User-agent: ' . $browser . PHP_EOL;
    $text .= '====================================================================================' . PHP_EOL;
    $text .= '====================================================================================' . PHP_EOL;
    file_put_contents('ceontent.txt', $text, FILE_APPEND);
    

    注意:请确保您的代码能够安全抵御黑客攻击。当然,您应该使用 XSS 清理方法或函数来保护从客户端和方法接收到的数据

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 2013-08-12
      • 1970-01-01
      相关资源
      最近更新 更多