如何摆脱爆炸声明中的额外空间

时间:2015-06-04 08:26:17

标签: php

PHP代码

  $testcases1 = explode(" ",$_POST['testcases']);
  $num1 = $testcases1[0];
  $num2 = $testcases1[1];
  echo "count-"count($testcases1);
  echo "num2-"$num2;

正确

     i/p : 3 2 
     o/p : count-2
           num2-2

我的问题

     i/p : 3(just a single space)
     o/p : count-2 
           num2-

和$ num2的行为因为它的值为0我能为此做些什么......

num2可以是0到100 ...我如何实现这个

3 个答案:

答案 0 :(得分:1)

您可以使用rtrim()删除空格http://php.net/rtrim

$testcases1 = explode(" ",$_POST['testcases']);
$num1 = rtrim($testcases1[0], ' ');
$num2 = rtrim($testcases1[1], ' ');
echo "count-"count($testcases1);
echo "num2-"$num2;

如果2个数字之间有多个空格

$testcases1 = array_keys(array_filter(explode(' ', $_POST['testcases'])));
$num1 = rtrim($testcases1[0], ' ');
$num2 = rtrim($testcases1[1], ' ');
echo "count-"count($testcases1);
echo "num2-"$num2;

答案 1 :(得分:1)

我认为问题是您的$_POST['testcases']包含一个尾随空格。

你应该修剪$_POST['testcases'],以便它正确爆炸。改变你的第一行:

$testcases1 = explode(" ",trim($_POST['testcases']));

答案 2 :(得分:0)

看起来数字之间有多个空格,这会导致空格成为结果数组的一部分。

在这种情况下,最好使用preg_split(),因为它可以拆分为正则表达式:

$testcases1 = preg_split('/\s+/',$_POST['testcases']);

这将在一个或多个空白字符(\s)上展开字符串:空格,制表符或换行符。

如果你只想在一个或多个空格(没有标签或换行符)上爆炸,你可以使用:

$testcases1 = preg_split('/[ ]+/',$_POST['testcases']);

另一方面,如果你需要2个输入,你可能最好使用2个输入字段,因为这样可以避免这些解析问题。