如何在语句中去掉多余的空间?


how can i get rid of extra space in explode statement

PHP代码

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

<>之前I/p: 3O/p:计数2num2-2之前

我的问题

<>之前I/p: 3(仅一个空格)O/p:计数2num2 -之前

和$num2的行为就像它的值为0一样,我该怎么做呢…

num2取值范围为0 ~ 100…如何实现

我认为问题是你的$_POST['testcases']包含尾部空白。

你应该修剪$_POST['testcases'],使它正确爆炸。将第一行改为:

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

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

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

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

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

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

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

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

这将把字符串扩展为1个或多个空白字符('s):空格、制表符或换行符。

如果你只想在1个或多个空格(没有制表符或换行符)上展开,你可以使用:

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

另一方面,如果您需要两个输入,您可能最好使用两个输入字段,因为这将避免这些类型的解析问题。