不需要的输出,用于php数组创建

时间:2018-12-13 14:49:48

标签: php html arrays

我正在尝试根据文本区域中的输入创建一个数组。

我有一个名为textarea的文件.textarea可能包含如下值(精确地看起来):

CREATE this.

DO that.

STOP it.

基本上,我想使用 PHP 进行操作:

例如,根据textarea给出的值创建一个数组,由上述textarea的th个值组成的数组应为:

Array
(
    [0] => create this
    [1] => do this
    [2] => Stop it

我尝试了以下代码:

 <?php 

    $wholecode=$_POST['code'];

     $code=explode('.',trim(strtolower($wholecode)));//convert code to array


    $words=explode(' ', $code);


print_r($code);

我明白了

Array
(
    [0] => create this
    [1] => 

do this
    [2] => 

stop it
    [3] => 
)

很明显,这不是我想要的。请帮助

2 个答案:

答案 0 :(得分:4)

创建数组后,您只需要整理一下数组内容。您会有诸如换行之类的内容,并且内容周围可能还有其他空白。

这使用array_map()trim()数组中的每个条目。然后使用array_filter()删除所有空元素(无需回调即可调用它)。

$wholecode=$_POST['code'];

$code=explode('.',trim(strtolower($wholecode)));//convert code to array
$code=array_map("trim", $code );
$code = array_filter($code);
print_r($code);

答案 1 :(得分:2)

这是一种直接方法,使用简单的正则表达式模式在零个或多个空格字符之后的点上爆炸。分裂后不扫地。

代码(Demo

$_POST['code'] = 'CREATE this.

DO that.

STOP it.';

var_export(preg_split('~\.\s*~', strtolower($_POST['code']), -1, PREG_SPLIT_NO_EMPTY));

输出:

array (
  0 => 'create this',
  1 => 'do that',
  2 => 'stop it',
)

作为变量...

$array = preg_split('~\.\s*~', strtolower($_POST['code']), -1, PREG_SPLIT_NO_EMPTY)

说明已从我的评论转移:

模式演示:https://regex101.com/r/jygaQ1/1

样本数据中有3个点。前两个具有紧随其后的空白字符。最后一个点没有尾随空格字符。

\s*的意思是“匹配零个或多个空格字符。

-1意味着无限爆炸。

PREG_SPLIT_NO_EMPTY表示在最终爆炸(最后一个点)上将生成一个空元素,但是preg_split()将在输出数组中忽略它。