在php中以json格式注册数据

在php中以json格式注册数据,php,json,Php,Json,我的php脚本中有这段代码 $concatenation= array('idcarde',$idcarde ,'mobile' ,$mobile ,'firstname',$firstname ,'lastname',$lastname ,'jour',$jour ,'mois',$mois ,'annee',$annee ,'adress',$adresse ,'Governora',$Governora); $P = serialize( $concatenation ); $mabase

我的php脚本中有这段代码

$concatenation= array('idcarde',$idcarde ,'mobile' ,$mobile ,'firstname',$firstname ,'lastname',$lastname ,'jour',$jour ,'mois',$mois ,'annee',$annee ,'adress',$adresse ,'Governora',$Governora);
$P = serialize( $concatenation );
$mabase = mysql_connect("localhost", "root", "root");
    if ($mabase) {
        mysql_select_db("mb", $mabase);
    }

    // insere toutes les donness provenant de $_POST
    $sql = " INSERT INTO `test` SET
            `formid` = '" . $formid . "',
            `data` = '" . mysql_escape_string($P) . "',
            `creation_date` = '" . date("Y-m-d H:i:s"). "' ";

    @mysql_query($sql, $mabase);
此代码将数据保存在我的表中test

数据列中,我得到了以下结果:

a:18:{i:0;s:7:"idcarde";i:1;s:8:"00688009";i:2;s:6:"mobile";i:3;s:8:"52199200";i:4;s:9:"firstname";i:5;s:6:"dumas";i:6;s:8:"lastname";i:7;s:6:"alen";i:8;s:4:"jour";i:9;s:2:"05";i:10;s:4:"mois";i:11;s:2:"05";i:12;s:5:"annee";i:13;s:4:"1951";i:14;s:6:"adress";i:15;s:54:"11 rue paris";i:16;s:9:"Governora";i:17;s:5:"france";}
我想知道如何消除这个值I:0i:1i:2i:3

我还尝试使用以下代码:

它以以下格式保存数据:

["idtype","CIN","mobile","20390112","idcard","00731429","firstname","samia","lastname","Mejri","email","","gender","M.","deliv_lieu","","deliv_d","","deliv_m","","deliv_y","","birthdate_d","08","birthdate_m","10","birthdate_y","1944","address","36 rue Grece ","city","France","gouv","France","profession","","field","","bank","","agency","","friends","","followers","","blog_url","","website","","civil_status","","nickname","","zipcode",""]
但在前面的代码中,它显示如下

a:18:{i:0;s:7:"idcarde";i:1;s:8:"00688009";i:2;s:6:"mobile";i:3;s:8:"52199200";i:4;s:9:"firstname";i:5;s:6:"dumas";i:6;s:8:"lastname";i:7;s:6:"alen";i:8;s:4:"jour";i:9;s:2:"05";i:10;s:4:"mois";i:11;s:2:"05";i:12;s:5:"annee";i:13;s:4:"1951";i:14;s:6:"adress";i:15;s:54:"11 rue paris";i:16;s:9:"Governora";i:17;s:5:"france";}
这就是我想要的,但我只是想消除I:0i:1i:2i:3,直到I:17

我现在尝试使用以下代码:

$concatenation= array('idcarde',$idcarde ,'mobile' ,$mobile ,'firstname',$firstname ,'lastname',$lastname ,'jour',$jour ,'mois',$mois ,'annee',$annee ,'adress',$adresse ,'Governora',$Governora);
$P = serialize( $concatenation );
$M=preg_replace('~i:[0-9];~', '', $P);
$mabase = mysql_connect("localhost", "root", "root");
    if ($mabase) {
        mysql_select_db("mb", $mabase);
    }

    // insere toutes les donness provenant de $_POST
    $sql = " INSERT INTO `test` SET
            `formid` = '" . $formid . "',
            `data` = '" . mysql_escape_string($M) . "',
            `creation_date` = '" . date("Y-m-d H:i:s"). "' ";

    @mysql_query($sql, $mabase);
此代码从数据中删除i:1;i:2直到i:9但它不能消除

例如i:10;i:11;i:12

我试图解决这个问题,但没有成功

$M=preg_replace(“~i:~;~”,“$p”)

我试着用a:28改变a:18

$P = serialize($concatenation) ;
  //$M=preg_replace('~i:[0-9];~', '', $P);
 $M=preg_replace('~i:[0-9]+;~', '', $P);
  $M1=preg_replace('a:[0-9]+~', 'a:28', $M); 
但它显示错误

我使用
$M1=preg_replace('~a:[0-9]+~','a:28',$M)找到了解决方案

但我想说28是$p中的元素数

因此,我应该在$p中找到元素的数量,然后在PHP中的a中使该值不序列化为JSON。如果需要JSON,则应使用:

Edit:此正则表达式将从序列化数据中删除
i:
,但请记住,一旦删除此正则表达式,您将无法
unserialize
生成的字符串,因此我不确定您为什么要这样做:

$M = preg_replace('/([{;])i:\d+;/', '$1', $P);

该函数与json_encode不同,它用于保存变量名及其值,稍后您可以使用它来保存所有内容。为此,请使用和。

因此,此处的
a:number
表示您有一个数组以及数组中的元素数。所有
i:编号是数组的键。它们一直到元素数-1(因为它以0开头)

如果删除键,它将像

 ['idcarde'] => '00688009'
 ['mobile'] => '5265656'
如果这是你想要的,那么在最初的一行

$concatenation= array('idcarde',$idcarde ,'mobile' ,$mobile ,'firstname',$firstname ,'lastname',$lastname ,'jour',$jour ,'mois',$mois ,'annee',$annee ,'adress',$adresse ,'Governora',$Governora);

只要用
=>
替换其他逗号,就可以设置

“~i:[0-9]+;~”我想知道我们怎样才能把a:18改成a:28,因为当我试着运行脚本时,我发现总是a:18{……}试着把你的正则表达式改成这样('/I:\d+;/g','')你可以数一数';'在给出删除整数后的元素数的行中,用
/^a:(\d+)/
替换a:18上的
“a:”$newNum
my$newNum=28,只是我想知道我应该在哪里制作/^a:(\d+)/
$concatenation= array('idcarde',$idcarde ,'mobile' ,$mobile ,'firstname',$firstname ,'lastname',$lastname ,'jour',$jour ,'mois',$mois ,'annee',$annee ,'adress',$adresse ,'Governora',$Governora);