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']);
另一方面,如果您需要两个输入,您可能最好使用两个输入字段,因为这将避免这些类型的解析问题。