Php 从textarea获取数组并将其转换为数组
我需要用户在textarea中输入一个数组,而这个数组可能是一个大数组,我试图序列化它并将其保存为DB编码,但失败了 这是我的代码:Php 从textarea获取数组并将其转换为数组,php,arrays,Php,Arrays,我需要用户在textarea中输入一个数组,而这个数组可能是一个大数组,我试图序列化它并将其保存为DB编码,但失败了 这是我的代码: if( strpos( $_POST['textarea_array'], 'array' ) !== FALSE ) { $temp_serialized = serialize( $_POST['textarea_array'] ); if( ( $temp_unserialized = @unserialize( $temp_seri
if( strpos( $_POST['textarea_array'], 'array' ) !== FALSE ) {
$temp_serialized = serialize( $_POST['textarea_array'] );
if( ( $temp_unserialized = @unserialize( $temp_serialized ) !== FALSE )
&& is_array( $temp_unserialized ) ) {
/* Condition FAILED */
$temp_json = json_encode( $temp_unserialized );
$final_value = base64_encode( $temp_json );
}
}
在文本区域中输入的内容示例:简单数组或复杂数组,每个键都有子数组
array(
'x_sub_array' => array(
'x_1' => 'X 1',
'x_2' => 'X 2',
'x_3' => 'X 3',
);
'x_2' => 'X 2',
'x_3' => 'X 3',
);
首先,有更简单的方法来传递数据。但如果这是绝对唯一的办法,那么不妨直截了当地回答。如果您的用户严格遵守格式
if(isset($_POST['textarea_array'])){
$raw = $_POST['textarea_array'];
//Parse the array section
$start = strpos($raw, "(");
$end = strpos($raw, ")");
$full = substr($raw,$start+1,$end - ($start+1));
//Remove quotations
$full = str_replace("'","",$full);
//Divide string into array of segments `key=>value` as one segment
$segments = explode(",", $full);
foreach($segments as $segment){
//Divide each segment `key=>value` to a temp array
//Index 0 will hold the key, Index 1 will hold value
$array_part = explode("=>",$segment);
//Remove spaces
$key = trim($array_part[0]);
$value = trim($array_part[1]);
//insert into associative array
$final[$key] = $value;
}
//$final now has your associative array
echo json_encode($final);
}
同样,还有更好的选择
-让用户通过AJAX传递json对象怎么样
-或者让用户输入每个元素并用换行符分隔
但是千万不要依赖serialize或eval,尤其是因为你不想让用户访问你的php页面。用户如何将“数组”中的每个元素分开?在你解析文本区域之前,文本区域不是一个大字符串吗?本例中的用户是开发人员,需要以其他方式使用此数组。请举例说明用户应该如何在文本区域中输入数组。你想做什么,让他们运行可能的评估?但是它失败了——如何,你得到了什么错误,或者你没有通过php和可能的db查询来检查它们?这张表格在哪?查一下再查一下