Php 如何在explode语句中去掉多余的空间
PHP代码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 :
$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']);