将括号中包含多个字符串的文本解析为数组

Posted

技术标签:

【中文标题】将括号中包含多个字符串的文本解析为数组【英文标题】:Parse text with multiple strings in brackets into arrays 【发布时间】:2019-04-24 12:14:15 【问题描述】:

我在解析这样的内容时遇到问题:

form_settings['settings']['title']: "Titulek", form_settings['settings']['description']: "Popisek formuláře...", form_settings['settings']['gdpr']: "ip", form_settings['settings']['acquisition']: "n", form_settings['settings']['style_form']: "without_border", …

我想要类似 php 的东西,你可以在其中调用它

$form_settings['settings']['title']

但你不能在 javascript 中做到这一点,我想在 php 中使用类似的数组我想做类似的事情

form_settings['settings']['title']

因为它不起作用,你知道如何解析它吗?感谢您的回答!

//编辑

<div class="col-md-10 col-form-label">
  <input type="text" id="title-for-receiver" class="form-control" name="form_settings['email']['$input_form['EMAIL']['title_for_receiver']->name']" value=$input_form['EMAIL']['title_for_receiver']->value />
</div>

我通过 javascript 得到了这些值

function getFormData(form)
var unindexed_array = form.serializeArray();
var indexed_array = ;

$.map(unindexed_array, function(n, i)
    indexed_array[n['name']] = n['value'];
);

return indexed_array;

【问题讨论】:

您是在询问解析字符串还是定位嵌套数组?这看起来不像是有效的 JavaScript 语法,所以我不确定你在追求什么。 我的意思是,这不是有效的 JSON。为什么不让它成为有效的 JSON? 是的,我想解析它并将括号中的这些字符串保存到数组中,这些数组的命名类似于括号中的第一个字符串。因此,如果您执行类似 tihs: form_settings['settings']['title'] 的操作,您将获得一个 Titulek 字符串。 我是从 html 中获得的,因为我有一个 name="form_settings['settings']['title']" 并且我是通过 javascript 获得的页,但有不同的第二个括号名称。我想像在 PHP 中那样做。 如果你在 JavaScript 中使用form_settings['settings']['title'],你将只得到标题字符串。 (我不得不查找“titulek”。) 【参考方案1】:

这不是你可以解析的。那个“解析”表示一个字符串或可以的东西。这:不能被“解析”:

    它同时具有单引号 ' 和双引号 ",因此它们都无法使其成为可解析对象的字符串。 它也有没有引号的内部元素

form_settings['settings']['title']: "Titulek", form_settings['settings']['description']: "Popisek 公式...", form_settings['settings']['gdpr']: "ip", form_settings['settings']['acquisition']: "n", form_settings['settings']['style_form']: "without_border", ...

编辑:我添加了mythingString,并且它的解析更加明显。

也许传递一个更好的对象:

var mything = 
  "form_settings['settings']['title']": "Titulek",
  "form_settings['settings']['description']": "Popisek formuláře...",
  "form_settings['settings']['gdpr']": "ip",
  "form_settings['settings']['acquisition']": "n",
  "form_settings['settings']['style_form']": "without_border"
;

console.log(mything["form_settings['settings']['title']"]);

var mything2 = 
  form_settings: 
    settings: 
      'title': "Titulek",
      'description': "Popisek formuláře...",
      'gdpr': "ip",
      'acquisition': "n",
      'style_form': "without_border"
    
  
;
console.log(mything2.form_settings['settings']['title']);
console.log(mything2.form_settings.settings.title);

var mythingString = '"form_settings[settings][title]": "Titulek",  "form_settings[settings][description]": "Popisek formuláře...", "form_settings[settings][gdpr]": "ip",  "form_settings[settings][acquisition]": "n", "form_settings[settings][style_form]": "without_border"';

var parsedThing = JSON.parse(mythingString);
console.log(parsedThing["form_settings[settings][title]"]);

【讨论】:

是的,这就是我想要从第一个“mything”到“mything2”做的事情,我想从 HTML“name”和元素 mything2.form_settings['settings'] 中获取它['title'] 将是带有标题的值。我该怎么做? @Miškyns 所以,首先得到mything 你没有那个。这就是重点。

以上是关于将括号中包含多个字符串的文本解析为数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在正则表达式公式中包含括号作为谷歌表格中公式的一部分

如何将拆分的字符串保存在C结构中包含的字符数组中?

将按钮的文本设置为在 WPF 中包含一些粗体字符

js处理一个数组中包含多个对象,根据对象的一个属性查找到这个对象

在正则表达式字符括号中包含连字符?

java web中请求和响应中包含中文出现乱码解析