Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php text将区域放入数组还是内爆?_Php - Fatal编程技术网

Php text将区域放入数组还是内爆?

Php text将区域放入数组还是内爆?,php,Php,假设我有一个文本区域,用户输入的信息与下面的样式完全相同: Ice cream Chocolate 然后提交此信息,我想检索信息,如下所示: Ice cream, Chocolate 这是最好的方法吗: $arr = explode("\n", $var); $arr = implode(",", $arr); 这样做时,它会像这样输出信息: Ice cream , Chocolate 注意奶油后面的空格,简单的trim()可以解决这个问题吗?只是一个猜测,但是分解中的“\r\n”可以纠

假设我有一个文本区域,用户输入的信息与下面的样式完全相同:

Ice cream
Chocolate
然后提交此信息,我想检索信息,如下所示:

Ice cream, Chocolate
这是最好的方法吗:

$arr = explode("\n", $var);
$arr = implode(",", $arr);
这样做时,它会像这样输出信息:

Ice cream , Chocolate

注意奶油后面的空格,简单的
trim()
可以解决这个问题吗?

只是一个猜测,但是分解中的“\r\n”可以纠正这个问题吗?我知道,在基于Windows的机器中,一条新的生产线就是这样

您可以将preg_split与正则表达式一起使用:

$text = preg_replace("~\s*[\r\n]+~", ', ', $text);

不要将修改后的数据存储在数据库中,只需存储原始数据,这样当您将其呈现给用户时,他们就可以轻松地对其进行编辑

就显示它们而言,当您向用户的浏览器显示输出时,请使用上面zrekms提到的正则表达式

$text = preg_replace("~\s*[\r\n]+~", ', ', $text);
上面这行就够了

哦,顺便说一句,对于那些想开发新产品线但不知道如何开发的人来说,因为他们在每个操作系统上都不同,而不是这样做

$arr = explode("\n", $var);
$arr = explode("\r\n", $var);
$arr = explode("\r", $var);
只用

$arr = explode(PHP_EOL, $var);

PHP_EOL相当于新行char及其操作系统独立性。

谢谢:)这更干净了,并且按照我的要求工作。我该如何做?假设我想选择“冰激凌,巧克力”并将其转换回原来的状态,以显示在文本区域中?@Kyle R:uhm,不可能转换回原来的状态,因为用户可以在一行中放几个逗号。我始终建议按原样存储用户数据,不进行任何修改,仅在必要时(当您显示时)进行装饰,并应用必要的修改。这是否适合您的情况?您建议我如何将文本区域中每行新行的数据输入到表上的一个字段中,然后在插入后将其按输入方式回显到文本区域中?如果您需要恢复数据的原样-是的,只需从数据库中取数据并保持原样即可(但别忘了应用
htmlspecialchars()
)。但不是从每一行-将所有用户输入按原样存储在一个字段(多行字符串)中,这是否太难检查?