如何在$ _POST上使用explode()

时间:2011-05-09 08:15:32

标签: php

有人可以帮助我explode()功能。我正在使用$_POST[]从我的网页上的表单中读取值,其中包含3个值:$user_id[$nro]".": "."$fname[$nro]".","."$sname[$nro]

现在我试图爆炸$_POST()值,但我无法让它工作。我试过两种不同的方式,但没有运气......

第一种方式:

$uservalue = array();
$uservalue = $_POST['userlist'];
foreach($uservalue as $line => $content) {
  $uservalue[$line] = explode(',',$content);
}
print_r($uservalue);

$uservalue[]中没有值。

第二种方式:

$uservalue = $_POST['userlist'];
$uservalue = explode(":", $uservalue);
$uservalue = explode(",", $uservalue);

Warning: explode() expects parameter 2 to be string, array given in ...

请有人帮助我并告诉他们如何正确地做到这一点?

感谢。

4 个答案:

答案 0 :(得分:2)

爆炸根据分隔符拆分字符串,并将其放入数组中。

在你的第一个例子中,$ uservalue = array();没有必要,因为假设$ _POST ['userlist']是一个字符串,而不是一个数组。

当您向该页面发布内容时,是否可以发布此代码的结果? (即只是把它放在顶部!你可能想要查看源代码来复制和粘贴它,因为它在渲染页面上看起来不太好)

<?php
print_r($_POST);
?>

好的,看看你在做什么(不知道为什么你把它全部放在一个变量中,而不是单独的那个btw!)你可以这样做:

$userlist = $_POST['userlist'];
$explode_on_colon = explode(":",$userlist);
$uservalue[0] = $explode_on_colon[0];

$explode_on_comma = explode(",", $explode_on_colon)

$uservalue[1] = $explode_on_comma[0];
$uservalue[2] = $explode_on_comma[1];

我没有尝试过,但你明白了。不幸的是,你不能在PHP中explode(",", $explode_on_colon)[0],因此是临时变量。

答案 1 :(得分:2)

你想要达到什么目的?另外,$ _POST包含什么?

如果你想要一个数组中的用户,你的答案就是这样:(不需要循环)

$userList = explode(',', $_POST['userlist']);

答案 2 :(得分:2)

首先,当您回显页面上的表单值时,您会有多余的引号。你现在拥有的是(我假设):

echo "$user_id[$nro]".": "."$fname[$nro]".","."$sname[$nro]";

虽然更合适的是:

echo $user_id[$nro].": ".$fname[$nro].",".$sname[$nro];

即,您不需要双引号变量。

其次,我假设您正在尝试将$_POST变量拆分为其三个组件。您的方法可能存在缺陷,因为您可以将这些值直接保存在三个不同的表单元素中:

<input type="hidden" name="user_id" value="<?php echo $user_id[$nro]; ?>" />
<input type="hidden" name="fname" value="<?php echo $fname[$nro]; ?>" />
<input type="hidden" name="sname" value="<?php echo $sname[$nro]; ?>" />

然后您可以单独访问这些变量。

但是,要回答你的问题,你可以像这样拆分你的字符串:

// Added for example, your value comes from $_POST
$str = "1: kevin,costner";

list($user_id, $rest) = explode(": ", $str);
// $user_id is a string, contains "1"
// $rest is a string, contains "kevin,costner"

// Explode the $rest again
list($fname, $sname) = explode(",", $rest);
// $fname is a string, contains "kevin"
// $sname is a string, contains "costner"

现在您有三个不同的变量来保存您的值。

此外,本网站的性质是接受您认为有帮助的答案,所以如果您在这里找到帮助,请这样做!

答案 3 :(得分:0)

发生在我身上: 我在一条线上设置但没有工作

$aFromPOST = explode (',',$_POST['cattodel']); 
// $_POST['cattodel'] has this values s,d,e,i

我不得不把它放在两条分开的线上并且工作......不知道为什么但是它就像这样工作......

 $sPOST= $_POST['cattodel']; // $_POST['cattodel'] has this values s,d,e,i
 $aFromPOST = explode (',',$sPOST);