如何在php中创建一个字符串数组的字符串?

时间:2015-07-05 18:25:11

标签: php arrays string variables runtime

我正面临以下问题。 有一个数组包含几个字符串。我们想要一起追加彼此。内爆功能似乎是解决方案。

以下是数组中的详细数据:

0   -----BEGIN ENCRYPTED PRIVATE KEY-----\n 
1   MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIR9as3yoyQisCAggA\n  
2   MBQGCCqGSIb3DQMHBAjr2e4eD62llQSCAoDOrZP66BNtAZNBhoyRRzPOYOXhBuG4\n  
3   ah/505qbWe+SlgSnp1GYS+mgrbMc6OCv6O+gUBMzX/oVHhZeE08CQI/a5V4nDyns\n  
4   I+v8c9nYdEPYVSpPQHSwYeA8zQErqBPkzUpG2PCrCSMixC0hfUK+2z8Q1C6rTMnQ\n  
5   JYQk7JPo+nNug+xEEETWt02g9vypo2F8NKcQQ3oSKdxmuGYzbIRFMMF9CYb5ruB2\n  
6   QcWGbi1Bb+28EozEv8sABOGfOF7SVC1o4IY/n0e/QPL67uPUmdJEi5PfDkoQpmYq\n  
7   G9wBEHpMr/XtQcYhHILFWI5a8bPGb/IOuNXUrYURVG6eIU/UJpyJAgoD7lHzKvB5\n  
8   n8Sya94Mbdt21oPRJOv8zcgnd4L9wcY9FK3kkWoxM1oFw4Y+lxrcIBKzy2dZF5uc\n  
9   8kiCM/25jbUCvKfvuEa8SiAZj7v9BudNwAspqFae/XMMoj5RGzXElEN/A28Je+vZ\n  
10  mfMiA2nDtsBXfxDtdxnRchAG2c35wau/HxLO427CcI1CoRyDtUnNPEUmsgIY6cMW\n  
11  tcG4mycApdfnSIwgvWpsj/hyEOICDR/q7+APu32Dc4jf6/r6gV0ItgdiNU4wXaNy\n  
12  HPjreeL6g/ndfd6LwIyIBdJp4jhvcUWgEGDXUBfkhQJVx+8xZJAYw+sfYXQiFuZd\n  
13  fyYv0pOR8F7FIdNC32zIFQpYdZ/SPROTY0FSNGlCUc1L0HX44E9T8bG9F+Lm9jpD\n  
14  1ME4SG+XkF9QBAuDGTIVk/qQCK1fIlyrO4t/6hCu9z1+7ZeXxqi2D/D8LOItzTgs\n  
15  W2F8oaOxOv5q5d9X/Bneb+8FpNWdACvmW9NtVLaBjI0VO3Ew+xHj8tyd\n  
16  -----END ENCRYPTED PRIVATE KEY-----\n   

我希望的结果如下:

-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIR9as3yoyQisCAggA\nMBQGCCqGSIb3DQMHBAjr2e4eD62llQSCAoDOrZP66BNtAZNBhoyRRzPOYOXhBuG4\nah/505qbWe+SlgSnp1GYS+mgrbMc6OCv6O+gUBMzX/oVHhZeE08CQI/a5V4nDyns\nI+v8c9nYdEPYVSpPQHSwYeA8zQErqBPkzUpG2PCrCSMixC0hfUK+2z8Q1C6rTMnQ\nJYQk7JPo+nNug+xEEETWt02g9vypo2F8NKcQQ3oSKdxmuGYzbIRFMMF9CYb5ruB2\nQcWGbi1Bb+28EozEv8sABOGfOF7SVC1o4IY/n0e/QPL67uPUmdJEi5PfDkoQpmYq\nG9wBEHpMr/XtQcYhHILFWI5a8bPGb/IOuNXUrYURVG6eIU/UJpyJAgoD7lHzKvB5\nn8Sya94Mbdt21oPRJOv8zcgnd4L9wcY9FK3kkWoxM1oFw4Y+lxrcIBKzy2dZF5uc\n8kiCM/25jbUCvKfvuEa8SiAZj7v9BudNwAspqFae/XMMoj5RGzXElEN/A28Je+vZ\nmfMiA2nDtsBXfxDtdxnRchAG2c35wau/HxLO427CcI1CoRyDtUnNPEUmsgIY6cMW\ntcG4mycApdfnSIwgvWpsj/hyEOICDR/q7+APu32Dc4jf6/r6gV0ItgdiNU4wXaNy\nHPjreeL6g/ndfd6LwIyIBdJp4jhvcUWgEGDXUBfkhQJVx+8xZJAYw+sfYXQiFuZd\nfyYv0pOR8F7FIdNC32zIFQpYdZ/SPROTY0FSNGlCUc1L0HX44E9T8bG9F+Lm9jpD\n1ME4SG+XkF9QBAuDGTIVk/qQCK1fIlyrO4t/6hCu9z1+7ZeXxqi2D/D8LOItzTgs\nW2F8oaOxOv5q5d9X/Bneb+8FpNWdACvmW9NtVLaBjI0VO3Ew+xHj8tyd\n-----END ENCRYPTED PRIVATE KEY-----

我的代码看起来像这样。

$arr = array();
...
$arr = $dataweloaded;
$string = implode($arr);

现在真的很有趣......

我的实际输出不是如上所述。 它只包含1024个字节。

-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIR9as3yoyQisCAggA\nMBQGCCqGSIb3DQMHBAjr2e4eD62llQSCAoDOrZP66BNtAZNBhoyRRzPOYOXhBuG4\nah/505qbWe+SlgSnp1GYS+mgrbMc6OCv6O+gUBMzX/oVHhZeE08CQI/a5V4nDyns\nI+v8c9nYdEPYVSpPQHSwYeA8zQErqBPkzUpG2PCrCSMixC0hfUK+2z8Q1C6rTMnQ\nJYQk7JPo+nNug+xEEETWt02g9vypo2F8NKcQQ3oSKdxmuGYzbIRFMMF9CYb5ruB2\nQcWGbi1Bb+28EozEv8sABOGfOF7SVC1o4IY/n0e/QPL67uPUmdJEi5PfDkoQpmYq\nG9wBEHpMr/XtQcYhHILFWI5a8bPGb/IOuNXUrYURVG6eIU/UJpyJAgoD7lHzKvB5\nn8Sya94Mbdt21oPRJOv8zcgnd4L9wcY9FK3kkWoxM1oFw4Y+lxrcIBKzy2dZF5uc\n8kiCM/25jbUCvKfvuEa8SiAZj7v9BudNwAspqFae/XMMoj5RGzXElEN/A28Je+vZ\nmfMiA2nDtsBXfxDtdxnRchAG2c35wau/HxLO427CcI1CoRyDtUnNPEUmsgIY6cMW\ntcG4mycApdfnSIwgvWpsj/hyEOICDR/q7+APu32Dc4jf6/r6gV0ItgdiNU4wXaNy\nHPjreeL6g/ndfd6LwIyIBdJp4jhvcUWgEGDXUBfkhQJVx+8xZJAYw+sfYXQiFuZd\nfyYv0pOR8F7FIdNC32zIFQpYdZ/SPROTY0FSNGlCUc1L0HX44E9T8bG9F+Lm9jpD\n1ME4SG+XkF9QBAuDGTIVk/qQCK1fIlyrO4t/6hCu9z1+7ZeXxqi2D/D8LOItzTgs\nW2F8oaOxOv5q5d9X/Bneb+8FpNWdACvmW9NtVLaBjI0VO3Ew+xHj8tyd\n-----END ENCRYPTED     

如果你比较那些字符串,你应该意识到缺少几个字节! 当前输出应该附加PRIVATE KEY-----\n,因此这是数组的最后一个元素的一部分,这将导致-----END ENCRYPTED PRIVATE KEY-----

我实际上只是实现-----END ENCRYPTED

我考虑过堆内存限制。 php.ini sais 256Mb是保留的。 我还读到变量可以达到2Gb大。 所以这不应该是这里的问题。

implode()也应该没问题,因为像file_get_contents()这样的其他功能也会返回相同的错误结果。

按行搜索代码,如下所示:

function readline($file){
    $string = null;
    $handle = fopen($file, "r");
    if ($handle) {
        while (($line = fgets($handle)) !== false) {
            $string .= $line;
        }
        fclose($handle);
    }
return $string;
}

我一直在寻找这个错误。跟踪调试器内部的调用使得甚至可以在每种情况下识别1024字节的修复大小,不使用我使用的方法。

您是否曾经历过这种异常行为? 我希望这不是太容易,我只是遗漏了一些重要的东西。

结果字符串应包含与数组元素完全相同的数据。

1 个答案:

答案 0 :(得分:2)

我使用的调试器实用程序似乎存在严重问题。 这是一张显示现象的图像。我高度假设在调试模式下,变量内容查看器中只会显示1024个字节。 代码很好,php不是错误=)

以前没有真正的问题。

enter image description here