【问题标题】:Convert JavaScript Object / JSON into PHP Array Trouble [duplicate]将 JavaScript 对象/JSON 转换为 PHP 数组麻烦 [重复]
【发布时间】:2015-08-18 11:12:07
【问题描述】:

这个问题与提到的重复答案/问题完全无关......

我有超过 1,000 个 JavaScript 格式的大型列表...

var plugins = [
    {
        name: "Roundabout - Interactive, turntable-like areas",
        url: "http:\/\/fredhq.com/projects/roundabout/",
        tag: "slide"
    },
    {
        name: "Slides - Simple slideshow plugin for jQuery",
        url: "http://slidesjs.com/",
        tag: "slide"
    }

    ......lots more
]

我的目标是将它们导入到这样的 PHP 数组中......

Array
(
    [0] => Array
        (
            [name] => Roundabout - Interactive, turntable-like areas/
            [url] => http://fredhq.com/projects/roundabout/
            [tag] => slide
        )

    [1] => Array
        (
            [name] => Slides - Simple slideshow plugin for jQuery
            [url] => http://slidesjs.com/
            [tag] => slide
        )

    [2] => Array
        (
            [name] => Orbit - jQuery Image Slider Plugin
            [url] => http://www.zurb.com/playground/jquery_image_slider_plugin/
            [tag] => slide
        )

)

我尝试使用 PHP 的 json_decode() 函数,但是源 JS 没有包含在 " 中的键,所以它不起作用。

当我在键和一些反斜杠周围手动添加" 时,PHP json_decode() 可以工作......

$json = '[{
    "name": "Roundabout - Interactive, turntable-like areas/",
    "url": "http:\/\/fredhq.com/projects/roundabout/",
    "tag": "slide"
},
{
    "name": "Slides - Simple slideshow plugin for jQuery",
    "url": "http:\/\/slidesjs.com\/",
    "tag": "slide"
},
{
    "name": "Orbit - jQuery Image Slider Plugin",
    "url": "http:\/\/www.zurb.com/playground/jquery_image_slider_plugin/",
    "tag": "slide"
}]';

echo '<pre>';
print_r(json_decode($json, true));
echo '</pre>';

但问题是我的大列表没有用引号括起来的键,所以我需要一种方法来自动化它。

由于到目前为止我的尝试都失败了,有人可以帮我实现最终目标吗?

【问题讨论】:

  • 您正在尝试解析 Javascript 源代码?为什么数据只能作为 Javascript 源代码提供?你不能以实际的 JSON 或任何其他格式获取数据吗?
  • 如果在 PHP 函数 json_decode 之前在对象中应用 JSON.stringify(obj) ,它会起作用。
  • @JasonDavis 你如何将 JSON 发送到 PHP?
  • 您不能简单地通过实际的 Javascript 运行它并让 it 生成您需要的输出吗?即使这只是 JSON 编码一次?
  • 现在数据只是在一个 JS 文件中,所以我不会将它发送到 PHP。除了我将其存储在 PHP 变量中并将其转换为 PHP 数组的测试之外。我只需要处理数据的 JS 文件 1 次,这样我的新 PHP 后端就可以将 JS 对象中的所有旧记录插入数据库

标签: javascript php json


【解决方案1】:

看起来问题可以通过采用这种方法手动解决,因为已经说过这里提供的 JSON 是有效的,最好使用控制台或其他东西来使 JSON 在任何地方都有效,而不仅仅是在 JavaScript 中使用:

plugins = JSON.stringify(plugins);

这将使plugins 看起来像:

"[{"name":"Roundabout - Interactive, turntable-like areas","url":"http://fredhq.com/projects/roundabout/","tag":"slide"},{"name":"Slides - Simple slideshow plugin for jQuery","url":"http://slidesjs.com/","tag":"slide"}]"

删除引号并将其放入 JSONLint 将给出一个有效的 JSON,如下所示:

[
    {
        "name": "Roundabout - Interactive, turntable-like areas",
        "url": "http://fredhq.com/projects/roundabout/",
        "tag": "slide"
    },
    {
        "name": "Slides - Simple slideshow plugin for jQuery",
        "url": "http://slidesjs.com/",
        "tag": "slide"
    }
]

现在最好的方法是复制这个输出并保存在文本中。

【讨论】:

  • 假设这里正在进行某种“发送”...
  • @deceze JavaScript 如何将内容发送到 PHP?
  • 我不知道!在我看来,OP 正在尝试解析某种 Javascript 源代码文件。
  • @PraveenKumar,我们不知道 OP 是否可以在这里使用 JavaScript。这就是我们在上面的 cmets 中讨论的内容。
  • @MarceloCamargo var, JavaScript 并且 OP 也标记了 JavaScript。
猜你喜欢
  • 2014-03-31
  • 2020-02-06
  • 2015-04-21
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多