0

我在使用 Sean Corfield 的 ColdFusion 项目脚本来使用 ColdFusion 对 php 数组进行反序列化时遇到问题。在寻找解决方案时,我在 Coldfusion 中的反序列化 PHP 数组中发现了这个方便的自定义标签。但这是我的问题。通过coldfusion查询传入php数组字符串时,我无法让它工作。请参阅下面的问题...

这工作正常...

    <cfsavecontent variable="teststring">a:1:{i:0;a:10:{s:2:"id";s:4:"2152";s:12:"variation_id";s:4:"2153";s:4:"name";s:18:"100 Wiki Backlinks";s:3:"qty";s:1:"1";s:9:"item_meta";a:3:{i:0;a:2:{s:9:"meta_name";s:25:"pa_is-your-website-a-wiki";s:10:"meta_value";s:11:"im-not-sure";}i:1;a:2:{s:9:"meta_name";s:30:"pa_url-to-your-target-web-page";s:10:"meta_value";s:51:"http://www.deluxerubberstamp.com/petid/petidtag.htm";}i:2;a:2:{s:9:"meta_name";s:25:"pa_enter-up-to-5-keywords";s:10:"meta_value";s:68:"pet id tags, animal id tags, pet supplies, dog id tags,cat id tags
";}}s:13:"line_subtotal";s:2:"29";s:17:"line_subtotal_tax";s:1:"0";s:10:"line_total";s:2:"29";s:8:"line_tax";s:1:"0";s:9:"tax_class";s:9:"zero-rate";}}</cfsavecontent>

<script:php>
    <?php

        $array = unserialize('<cfoutput>#teststring#</cfoutput>');
        $_COLDFUSION["greeting"] = json_encode($array);

    ?>
</script:php>

<cfdump var="#deserializeJSON(greeting)#">

但这不起作用,只是在转储中返回“NO”,就好像 json 无效或其他什么......

<cfquery datasource="#request.dsname#" username="#request.dsuser#" password="#request.dspassword#" name="getorder" >
SELECT phparrayorderdetail FROM tbl_orders WHERE orderid = '1'
</cfquery>

<cfsavecontent variable="teststring">#trim(getorder.phparrayorderdetail)#</cfsavecontent>

<script:php>
    <?php

        $array = unserialize('<cfoutput>#teststring#</cfoutput>');
        $_COLDFUSION["greeting"] = json_encode($array);

    ?>
</script:php>

请注意,我可以使用...

<cfoutput>#getorder.phparrayorderdetail#</cfoutput>

或者

<cfdump var="#getorder.phparrayorderdetail#">

在我的浏览器中输出 php 数组,它与您在上面看到的 php 数组字符串相同。我实际上可以将它复制并粘贴到 unserialize() 函数中,如上所示,脚本再次正常工作。我不知道为什么通过coldfusion查询传入php数组字符串时它不起作用。在将其传递给 ColdFusion 端的 php 数组字符串以使其正常工作之前,我必须对它进行其他类型的格式化吗?

非常感谢您的任何意见或建议。

4

0 回答 0