【问题标题】:Handling textarea new Lines using JS formData to PHP backend使用 JS formData 处理 textarea 新行到 PHP 后端
【发布时间】:2022-12-19 00:29:22
【问题描述】:

我有一个在 ubuntu 20.04 上运行 PHP 7.4 的网站,其表单带有 textarea 元素。这是它的设置方式。

<form id="user-input">
<textarea name="usertags">
</textarea>
</form>

当用户单击提交按钮时,我正在使用 POST 获取请求表单数据JSON.字符串化在Javascript中

formData = new FormData(document.getElementById("user-input"));
async function postUserAction(formData) {
   const response = await fetch('https://example.com/action.php', {
      method: 'POST',
      body: JSON.stringify(Object.fromEntries(formData))
   });
      return await response.json(); 

在 PHP 后端

$json = file_get_contents('php://input');
$data = json_decode($json);
$tags= explode(PHP_EOL, $data->usertags);

现在,我的问题是,如果PHP_EOL无论用户使用什么浏览器/系统/设备,跨平台都是安全的吗?我将标签存储在数据库中,因此我需要能够获得一致的结果。

【问题讨论】:

    标签: javascript php json


    【解决方案1】:

    PHP_EOL 依赖于平台,这意味着它对应于 Windows 上的 和其他平台上的 。正如here 所指出的,您可以先尝试规范化换行符:

    $usrTags = preg_replace('~R~u', "
    ", $data->usertags);
    

    然后进行爆炸:

    $tags= explode("
    ", $usrTags);
    

    由于您的数据来自客户端浏览器,我非常怀疑您会发现除“ ",因此您可以将 PHP_EOL 替换为 而不是规范化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      • 2013-11-13
      • 1970-01-01
      • 2011-04-24
      • 2012-08-05
      相关资源
      最近更新 更多