Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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 如何在explode语句中去掉多余的空间_Php - Fatal编程技术网

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

Php 如何在explode语句中去掉多余的空间,php,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 2 o/p:计数2 num2-2 我的问题 i/p :

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 2 o/p:计数2 num2-2 我的问题

i/p : 3(just a single space) o/p : count-2 num2- i/p:3(仅一个空间) o/p:计数2 num2- $num2的行为是因为它的值为0,我可以为此做些什么

num2可以是0到100。。。如何实现此操作

您可以使用
rtrim()
删除空格

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

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

我认为问题在于您的
$\u POST['testcases']
包含一个尾随空格

您应该对['testcases']进行修剪,以使其正确分解。将第一行更改为:

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

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

在这种情况下,最好使用可以在正则表达式上拆分的as:

$testcases1 = preg_split('/\s+/',$_POST['testcases']);
这将在一个或多个空白字符(
\s
)上分解字符串:空格、制表符或新行

如果只想在一个或多个空间(无选项卡或新行)上分解,可以使用:

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

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

为什么不使用修剪函数我不能对数组使用修剪-修剪只对字符串有效,,,,(修剪()希望参数1是字符串)@jane你说得对,我错过了。您能提供一个
$\u POST['testcases']
返回的示例吗?3 2因此$num1=3$num2=2@jane我没有得到任何代码错误<代码>$num1=rtrim($testcases1[0],“”)和
$num2=rtrim($testcases1[1],“”)两者都是字符串
var_dump($testcases1[0]);var_dump($testcases1[1])
返回
string(1)“3”string(1)“2”
@jane
$\u POST['testcases']
数字之间是否有2个空格?试试这个,替换
$testcases1=explode(“,$\u POST['testcases')带有
$testcases1=array\u键(array\u过滤器(explode(“”,$\u POST['testcases'))
$testcases1 = preg_split('/[ ]+/',$_POST['testcases']);