php编码cookie值编码

php编码cookie值编码,php,cookies,encoding,character-encoding,urlencode,Php,Cookies,Encoding,Character Encoding,Urlencode,我有一些生饼干。基本上是这样的: $block_simple = 'amsterdam=^a2p=4e52bafe90000000000.^sfLMD=1144330254^sbf=#c0000000a0000000004^cos=5^cv=15555^sin=in^js=1^dv=4e52b496^; dp1=bpcid/1907355535033e818^a1p/04e540618^fm/5.3.24e7a1bc1^kms/in52151b98^pbf/#80000000045033

我有一些生饼干。基本上是这样的:

$block_simple = 'amsterdam=^a2p=4e52bafe90000000000.^sfLMD=1144330254^sbf=#c0000000a0000000004^cos=5^cv=15555^sin=in^js=1^dv=4e52b496^; dp1=bpcid/1907355535033e818^a1p/04e540618^fm/5.3.24e7a1bc1^kms/in52151b98^pbf/#80000000045033e818^mpc/0|34e5fe398^reg/^flagReg=1^52151b98^tzo/-3c52151b96^u1p/Y2xlbW8xMDQ35033e818^u1f/bill5033e818^idm/14e568347^; cssg=f27d4a5f1310a47ac5c0d1b0ffe1e901; nonsession=BAQAAATHFlnoQAAaAAEAACVAz6BhjbGVtbzEwNDcABAAJUDPCQWNsZW1vMTA0NwFkAAJQM gYIzIAygAgV7i2GGYyN2Q0YTVmMTMxMGE0N2FjNWMwZDFiMGZmZTFlOTAxAKoAAVAz6BgwAMsAAk5Su6A4MgFMABhQM gYNGU1MmI0OTguMC4xLjIuMTA3LjQuMC4zAU0AF1Az6Bg0ZTUyYjQ2Ny4wLjEuMy40MC4wLjAuMwAQAAlQM gYY2xlbW8xMDQ3ADMAC1Az6BhCQTIgOEpRLEdCUgDzACJQM gYJDIkbG9FSFZIa2ckejFOaDdjZTE4NWpKTENJWXpHemRrMQCaAApOU BBY2xlbW8xMDQ3aACcADhQM gYblkrc0haMlByQm1kajZ3Vm5ZK3NFWjJQckEyZGo2d0drSVdvQzVLR3FRdWRqNng5blkrc2VRPT0AnQAIUDPoGDAwMDAwMDAxM5dSPx0CaJX1ZoMRrBnZ/7dgQSM*; cid=8jLVETzyhohsSktA#190735553; npii=btrm/svid=572133042035033e6be^tguid/f27d4a5f1310a47ac5c0d1b0ffe1e9015033e6be^cguid/f27d65741310a47a26f398e3fe7999045033e6be^; lucky9=2524611; ds1=ats/1314038674493; secses=BAQAAATHFlnoQAAaAAUsAF1Az6Bg0ZTUyYjQ5OC4wLjEuMi44OS40LjAuM70LVKpcj67yqpxdXqgT56WI5Ov ; ds2=ssts/1314043029160^'; 函数urlencode_cb($matches){ 返回$matches[1]。rawurlencode($matches[2]); } $block_coded=preg_replace_回调('#(\w+?=)([^\s;]+)\s*#','urlencode_cb',$block_simple); 但它并不适用于所有的模块(实际上,50%的模块都失败了)。下面是一个示例,上面的函数不起作用

$block_simple ='amsterdam=^a2p=4e53c10790000000000.^lrtjs=1.1^sfLMD=1144330254^sbf=#c0000000a0008000004^cos=5^cv=15555^sin=in^lvmn=2|0|130519409054|180712051981|^js=1^dv=4e53c023^; dp1=bvrvi/0|0|4e60ef26^pcid/1907355535034f3a6^a1p/04e5511a6^fm/5.3.24e7a1bc1^kms/in52162726^pbf/#6000000088000000045034f3a6^mpc/0|34e60ef26^reg/^flagReg=1^52162726^tzo/-3c52162723^u1p/Y2xlbW8xMDQ35034f3a6^idm/14e568347^u1f/bill5034f3a6^; cssg=f27d4a5f1310a47ac5c0d1b0ffe1e901; nonsession=BAQAAATHFlnoQAAaAAEAACVA086ZjbGVtbzEwNDcABAAJUDPCQWNsZW1vMTA0NwFkAAJQNPOmIzIACAAcTntNJjEzMTQxMDkzMDR4MTMwNTE5NDA5MDU0eDB4Mk4AqgABUDTzpjAAygAgV7nBpmYyN2Q0YTVmMTMxMGE0N2FjNWMwZDFiMGZmZTFlOTAxAMsAA05Txy4xNDMBTAAYUDTzpjRlNTNjMDI2LjAuMS4yLjEwNy40LjAuMwFNABdQNPOmNGU1M2I3OGMuMC4xLjMuNDAuMC4wLjMAEAAJUDTzpmNsZW1vMTA0NwAzAAtQNPOmQkEyIDhKUSxHQlIA8wAiUDTzpiQyJGxvRUhWSGtnJHoxTmg3Y2UxODVqSkxDSVl6R3pkazEAmgAKTlPgQWNsZW1vMTA0N2gAnAA4UDTzpm5ZK3NIWjJQckJtZGo2d1ZuWStzRVoyUHJBMmRqNndHa0lXb0M1S0dxUXVkajZ4OW5ZK3NlUT09AJ0ACFA086YwMDAwMDAwMardeUkKMs4Os7ChwB6XUI1HBogs; cid=8jLVETzyhohsSktA#190735553; npii=btrm/svid=572133042035034eabb^cguid/f27d65741310a47a26f398e3fe7999045034eabb^tguid/f27d4a5f1310a47ac5c0d1b0ffe1e9015034eabb^; lucky9=2524611; ds1=ats/1314038674493; secses=BAQAAATHFlnoQAAaAAUsAF1A086Y0ZTUzYzAyNi4wLjEuMi44OS41LjAuMxLtD8ybEPsI/sx10s7RA5 bEe8A; ds2=ssts/1314111522013^'; $block_simple='amsterdam=^a2p=4e53c10790000000000。^lrtjs=1.1^sfLMD=1144330254^sbf=#c0000000a0008000004^cos=5^cv=15555^sin=in^lvmn=2 | 0 | 130519409054 124712051981 | js=1^dv=4e53c023^;dp1=bvrvi/0 | 0 | 4e60ef26^pcid/1907355535034f3a6^a1p/04e5511a6^fm/5.3.24e7a1bc1^kms/in52162726^pbf/#6000000008800000045034F3A6^mpc/0 | 34e60ef26^reg/^BWRAGREG=1^52162726^tzo/-3c52162723^u1p/Y28XMDQ35034F3A6^idm/E568347/BWF3^4F3;cssg=F27D4A5F1310A47AC5C0D1B0FFEE901;非连续性=BAQAATHFLNOQAAAAACVA086ZJBGVTbzewndcabaajudpcqwnszmzTa0nwfkAjzmqmzmdr4mWntjezmzMk4mK4aqgabudtzPjayGagV7nBpmyyyN2Q0YTvmMmXmMge0n2FjnzWzFwZdfizFimzMzmzmzFlotaxa05tx4xN4xNdzmWnzmWnzMw4mWnzMw4mWnzmWnzmWnzmWnzyWnzyWnzyWnzMw4mWnWnzUdZmWnzUdZyWnzUdZmWnzZmWnWnzNdZnzZmWnWAIUDTZPIQYJGxVRUHWSGTNJHOXTMG3Y2UxODVQSKXDSVL6R3PKAZEAMGAKTLPGWNSZW1VMTA0N2GANAA4UDTZPM5ZK3NIWJJJQCKJTZGO2DZUWSTZRVOYUHJMRQNDHA0LXB0M1S0DXUxVKAJ4OW5ZK3NLUZJ0ACFA086YWMDAWKKMS4OS7CHWB6XUI1HBOGS;cid=8jLVETzyhohsSktA#190735553;npii=btrm/svid=572130402035034EABB^cguid/F27D6574310A47A26F398E3FE799904034EABB^tguid/F27D4A5F1310A47AC5C0D1B0FFEE9015034EABB^;幸运9=2524611;ds1=ats/1314038674493;秒=Baqaaathflnoqaaaausaf1a086y0ztuzzayni4wljeumi44os41ljaumxltd8ybepsi/sx10s7RA5 bEe8A;ds2=ssts/1314111522013^'; $block_code='阿姆斯特丹=%5Ea2p%3D4e53c10790000000000.%5Elrtjs%3D1.1%5EsfLMD%3D1144330254%5Esbf%3D%23c0000000a0008100004%5Ecos%3D5%5Ecv%3D15555%5Elvmn%3D2%7C0%7C130519409054%7C180712051981%7C%5Esin%5Ejs%5Edv%3D4e53bfa6%5E;dp1=bvrvi/0%7C0%7C4e60eeaa^pcid/1907355535034f32a^a1p/04e55112a^fm/5.3.24e7a1bc1^pbf/%2360000000880000045034F32A^mpc/0%7C34e60eeaa^kms/in521626aa^reg/%5EflagReg%3D1%5E57bc6427^tzo/-3c521626a6^u1p/Y2BW8XMDQ35032A^u1f/bill5034f32a^idm/E5342A^;cssg=F27D4A5F1310A47AC5C0D1B0FFEE901;s=BaqaathflnoqaawaaaeacU5T9RJJBGVTbzewndCaaWtK2Zg0AuaCFA08YO0ZDLZgM3NQfLaajovrqaJrNdQaJrNdJrNdJrNdJmF4YWOS41MWAMWAMWAMWtK4Ao4AoWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtWtZLMWU5MDEAPQAJTLKMNSZW1VMTA0N5LDDUI42WNQC0BPBDVJ17THZYGM;非连续性=BQaathflnoqaaaaaaacva08YPJBGVTbzewndCabaajudpCqWnSzW1VmTa0NWFKaajNpzmDdR4mWnTdWnD4mWnD4mWnB4mAyGagV7NbKmWn2Q0YTmMmMmMmXmMmMgmXmMgn2Fn2FnWnWnzFwZdFfFimZmZmZtFlotaxTaxTaxTaxVan08YowamSa0TdWnzMdWnzTdWnZmSzTnzTnzTnzTnzMfRnzTnzMfRnzMfRnzMfRnzMfLnzMf4nzMfRnzMf4nzMf4Waiudtzkiqyjgxvruhwsgtnjhoxtmg3y2uxodvqskdSvL6R3pKazeamgaktlPgqwnszww1vmta0n2Ganaa4Udtzkm5zk3niwjjjjkjtzg1Zg1Zuwstzrvoyuhjbmrqnndha0lxB0m1s0dxuxvkajzk4o5zk3n9aj0acfa08yowmdawmdawmaiuk/YCex+5DdAYEm4BqgIwoGfu;cid=8jLVETzyhohsSktA%23190735553;npii=btrm/svid%3D572130402035034EABB^cguid/F27D6574310A47A26F398E3FE799904034EABB^tguid/F27D4A5F1310A47AC5C0D1B0FFEE9015034EABB^;幸运9=2524611;ds1=ats/1314038674493;ns1=Baqaaathflnoqaaaakuadfa08YODCvMdUsuc6laceB+oxRkYBCNdqXjlbT6A**;秒=Baqaaathflnoqaaaausaf1a08yo0ztuzymzhys4wljeumi44os41ljaum8+vafwg8wcngdzdwt07uo7ptrh;shs=Baqaaathflnoqaaaavuadk5b3hiymdyndu1nzawmdsgsg9mhllfoepc4nzczhm8mcijwiy;ds2=ssts/1314111517271^';
您可以使用
rawurlencode
urlencode
(它们之间的唯一区别是编码“~”字符的第二个字符)

我认为您希望对每个值应用。您可以这样做:

$cookies = preg_split('/[; ]+/', $block_coded, -1, PREG_SPLIT_NO_EMPTY);
foreach ($cookies as &$cookie) {
    list($name, $value) = explode('=', $cookie, 2);
    $cookie = $name.'='.rawurlencode($value);
}
$block_coded = implode('; ', $cookies);

my php cookie值编码函数:

<?
function encode_cookie_value($value)
         {return strtr($value,
                       array_combine(str_split($tmp=",; \t\r\n\013\014"),
                                     array_map('rawurlencode', str_split($tmp))
                                    )
                      );
         }
setrawcookie('kk', encode_cookie_value('jk=jk?jk-/":jk;jk jk,jk'));
?>

我认为它也会对第一个“=”进行编码,它用cookie值分隔cookie名称。例如amsterdam=也是参数的结尾,例如“;”似乎没有被编码。在urlencode中,它将变成“%3b+”。我花了一整天的时间试图制作一个工作的转换器…我需要将$block_simple转换为$block_代码。我认为您的代码不会这样做,因为我看不到$block_simple上的任何引用。是否有输入错误?第一个用cookie值分隔cookie名称的“=”似乎没有编码在第二个块中。例如阿姆斯特丹=
$block_simple ='amsterdam=^a2p=4e53c10790000000000.^lrtjs=1.1^sfLMD=1144330254^sbf=#c0000000a0008000004^cos=5^cv=15555^sin=in^lvmn=2|0|130519409054|180712051981|^js=1^dv=4e53c023^; dp1=bvrvi/0|0|4e60ef26^pcid/1907355535034f3a6^a1p/04e5511a6^fm/5.3.24e7a1bc1^kms/in52162726^pbf/#6000000088000000045034f3a6^mpc/0|34e60ef26^reg/^flagReg=1^52162726^tzo/-3c52162723^u1p/Y2xlbW8xMDQ35034f3a6^idm/14e568347^u1f/bill5034f3a6^; cssg=f27d4a5f1310a47ac5c0d1b0ffe1e901; nonsession=BAQAAATHFlnoQAAaAAEAACVA086ZjbGVtbzEwNDcABAAJUDPCQWNsZW1vMTA0NwFkAAJQNPOmIzIACAAcTntNJjEzMTQxMDkzMDR4MTMwNTE5NDA5MDU0eDB4Mk4AqgABUDTzpjAAygAgV7nBpmYyN2Q0YTVmMTMxMGE0N2FjNWMwZDFiMGZmZTFlOTAxAMsAA05Txy4xNDMBTAAYUDTzpjRlNTNjMDI2LjAuMS4yLjEwNy40LjAuMwFNABdQNPOmNGU1M2I3OGMuMC4xLjMuNDAuMC4wLjMAEAAJUDTzpmNsZW1vMTA0NwAzAAtQNPOmQkEyIDhKUSxHQlIA8wAiUDTzpiQyJGxvRUhWSGtnJHoxTmg3Y2UxODVqSkxDSVl6R3pkazEAmgAKTlPgQWNsZW1vMTA0N2gAnAA4UDTzpm5ZK3NIWjJQckJtZGo2d1ZuWStzRVoyUHJBMmRqNndHa0lXb0M1S0dxUXVkajZ4OW5ZK3NlUT09AJ0ACFA086YwMDAwMDAwMardeUkKMs4Os7ChwB6XUI1HBogs; cid=8jLVETzyhohsSktA#190735553; npii=btrm/svid=572133042035034eabb^cguid/f27d65741310a47a26f398e3fe7999045034eabb^tguid/f27d4a5f1310a47ac5c0d1b0ffe1e9015034eabb^; lucky9=2524611; ds1=ats/1314038674493; secses=BAQAAATHFlnoQAAaAAUsAF1A086Y0ZTUzYzAyNi4wLjEuMi44OS41LjAuMxLtD8ybEPsI/sx10s7RA5 bEe8A; ds2=ssts/1314111522013^';
$block_coded='amsterdam=%5Ea2p%3D4e53c10790000000000.%5Elrtjs%3D1.1%5EsfLMD%3D1144330254%5Esbf%3D%23c0000000a0008100004%5Ecos%3D5%5Ecv%3D15555%5Elvmn%3D2%7C0%7C130519409054%7C180712051981%7C%5Esin%3Din%5Ejs%3D1%5Edv%3D4e53bfa6%5E; dp1=bvrvi/0%7C0%7C4e60eeaa^pcid/1907355535034f32a^a1p/04e55112a^fm/5.3.24e7a1bc1^pbf/%236000000088000000045034f32a^mpc/0%7C34e60eeaa^kms/in521626aa^reg/%5EflagReg%3D1%5E57bc6427^tzo/-3c521626a6^u1p/Y2xlbW8xMDQ35034f32a^u1f/bill5034f32a^idm/14e568347^; cssg=f27d4a5f1310a47ac5c0d1b0ffe1e901; s=BAQAAATHFlnoQAAWAAAEACU5T9RJjbGVtbzEwNDcAAwAFTlURKjE2Mzg0AUUACFA08yo0MzdlZGM3NQFlAAJOVREqIzIABgABTlURKjAAqAABTlP1EjEBSgAYTlURKjRlNTNiZmFhLjAuMS4yLjEwOS41LjAuMwAMAAlOVREqMjA3OTMyNDg3AO4AF05VESowBmh0dHA6Ly93d3cuZWJheS5jb20vBwASAApOVREqdGVzdENvb2tpZQD0ACJOVREqJDIkbG9FSFZIa2ckejFOaDdjZTE4NWpKTENJWXpHemRrMQD4ACBOVREqZjI3ZDRhNWYxMzEwYTQ3YWM1YzBkMWIwZmZlMWU5MDEAPQAJTlURKmNsZW1vMTA0N5ldduI42WNQc0BpBDVJ17THzygM; nonsession=BAQAAATHFlnoQAAaAAEAACVA08ypjbGVtbzEwNDcABAAJUDPCQWNsZW1vMTA0NwFkAAJQNPMqIzIACAAcTntMqjEzMTQxMDkzMDR4MTMwNTE5NDA5MDU0eDB4Mk4AygAgV7nBKmYyN2Q0YTVmMTMxMGE0N2FjNWMwZDFiMGZmZTFlOTAxAKoAAVA08yowAMsAA05TxrIxNDIBTAAYUDTzKjRlNTNiZmFhLjAuMS4yLjEwNy40LjAuMwFNABdQNPMqNGU1M2I3OGMuMC4xLjMuNDAuMC4wLjMAEAAJUDTzKmNsZW1vMTA0NwAzAAtQNPMqQkEyIDhKUSxHQlIA8wAiUDTzKiQyJGxvRUhWSGtnJHoxTmg3Y2UxODVqSkxDSVl6R3pkazEAmgAKTlPgQWNsZW1vMTA0N2gAnAA4UDTzKm5ZK3NIWjJQckJtZGo2d1ZuWStzRVoyUHJBMmRqNndHa0lXb0M1S0dxUXVkajZ4OW5ZK3NlUT09AJ0ACFA08yowMDAwMDAwMaIuK/YCex+5DdAYEm4BqgIwoGfu; cid=8jLVETzyhohsSktA%23190735553; npii=btrm/svid%3D572133042035034eabb^cguid/f27d65741310a47a26f398e3fe7999045034eabb^tguid/f27d4a5f1310a47ac5c0d1b0ffe1e9015034eabb^; lucky9=2524611; ds1=ats/1314038674493; ns1=BAQAAATHFlnoQAAaAAKUADFA08yoyMDc5MzI0ODcvMDusUc6LAcEB+oxRkYBCNdqXjlbT6A**; secses=BAQAAATHFlnoQAAaAAUsAF1A08yo0ZTUzYmZhYS4wLjEuMi44OS41LjAuM8+VafwG8wCngDZdwt073uO7PTRH; shs=BAQAAATHFlnoQAAaAAVUADk5b3hIyMDYyNDU1NzAwMDMsMSg9MHLlFoepc4NzCZHM8McIjWiy; ds2=ssts/1314111517271^';
$cookies = preg_split('/[; ]+/', $block_coded, -1, PREG_SPLIT_NO_EMPTY);
foreach ($cookies as &$cookie) {
    list($name, $value) = explode('=', $cookie, 2);
    $cookie = $name.'='.rawurlencode($value);
}
$block_coded = implode('; ', $cookies);
<?
function encode_cookie_value($value)
         {return strtr($value,
                       array_combine(str_split($tmp=",; \t\r\n\013\014"),
                                     array_map('rawurlencode', str_split($tmp))
                                    )
                      );
         }
setrawcookie('kk', encode_cookie_value('jk=jk?jk-/":jk;jk jk,jk'));
?>