Php 如何将此字符串转换为数组?
我不习惯将特定格式的字符串转换为数组。使用Php 如何将此字符串转换为数组?,php,regex,arrays,Php,Regex,Arrays,我不习惯将特定格式的字符串转换为数组。使用explode拆分字符串似乎不是正确的方法,我对正则表达式不太在行。所以我的问题是如何将下面的字符串转换为数组 字符串的当前格式 maxWidth: 800, openEffect: elastic, closeEffect: elastic, helpers : { title : { type: outside }, thumbs : {
explode
拆分字符串似乎不是正确的方法,我对正则表达式不太在行。所以我的问题是如何将下面的字符串转换为数组
字符串的当前格式
maxWidth: 800,
openEffect: elastic,
closeEffect: elastic,
helpers : {
title : {
type: outside
},
thumbs : {
width : 50,
height : 50
}
}
所需阵列
array(
'maxWidth' => 800,
'openEffect' => 'elastic',
'closeEffect' => 'elastic',
'helpers' => array(
'title' => array('type' => 'outside'),
'thumbs' => array('width' => 50, 'height' => 50)
)
)
任何帮助都将不胜感激
根据回复进行编辑:
$str = preg_replace('/\b/' , '"' , $str);
$str = '{' . $str . '}';
字符串看起来像JSON,但不是JSON。它只是用户以该格式输入的字符串。输入将来自普通用户,所以我想保持简单。普通用户输入有效JSON的可能性最小。示例中的字符串几乎是有效的JSON(JavaScript对象表示法)结构 以下是作为有效JSON的字符串的外观
{
"maxWidth": 800,
"openEffect": "elastic",
"closeEffect": "elastic",
"helpers": {
"title": {
"type": "outside"
},
"thumbs": {
"width": 50,
"height": 50
}
}
}
因此,我们的方法(正如@WiseGuy所建议的)是首先使用preg\u replace
注入几个字符,以将字符串init转换为有效的JSON:
$str = preg_replace('/\b/' , '"' , $str);
$str = '{' . $str . '}';
上面的正则表达式使用单词边界
锚点在所有单词周围添加引号。然后我们用大括号把整个东西包起来,瞧,我们有了一个与x语言兼容的对象格式
我们现在可以使用标准函数生成对象:
$objUserConfig = json_decode($str, true);
关于JSON的入门教程如下:
使用linter工具(如)验证JSON。我使用它来调试您的示例,并将其转换为适合我的示例的JSON。您示例中的字符串几乎是一个有效的JSON(JavaScript对象表示法)结构 以下是作为有效JSON的字符串的外观
{
"maxWidth": 800,
"openEffect": "elastic",
"closeEffect": "elastic",
"helpers": {
"title": {
"type": "outside"
},
"thumbs": {
"width": 50,
"height": 50
}
}
}
因此,我们的方法(正如@WiseGuy所建议的)是首先使用preg\u replace
注入几个字符,以将字符串init转换为有效的JSON:
$str = preg_replace('/\b/' , '"' , $str);
$str = '{' . $str . '}';
上面的正则表达式使用单词边界
锚点在所有单词周围添加引号。然后我们用大括号把整个东西包起来,瞧,我们有了一个与x语言兼容的对象格式
我们现在可以使用标准函数生成对象:
$objUserConfig = json_decode($str, true);
关于JSON的入门教程如下:
使用linter工具(如)验证JSON。我使用它调试您的示例,并将其转换为适合我的示例的JSON。您的输入字符串看起来像JSON格式。PHP使用
json\u decode()
将json字符串转换为对象
要转换为数组,请使用以下代码:
json_decode($jsonStr, true);
请参阅:您的输入字符串看起来像json格式。PHP使用
json\u decode()
将json字符串转换为对象
要转换为数组,请使用以下代码:
json_decode($jsonStr, true);
请参阅:编辑:我知道您正在显示阵列的打印输出,
不是php声明数组的静态表示形式。这只是一个
如何将其转换为可解析内容的示例
进入那个阵列。如果php有这样的能力,动态地这样做(我不知道) 转换文件,读入$str 按照此顺序,在$str上执行正则表达式。
每个都是全球标志
(?i)([a-z]+)
到“$1”
(?i)(?数组(
}
至)
最后,$newstr=“array(\n$str\n)”
但是,php解析器可以将这样的内容作为静态文件读取
数组。它是如何动态解释为变量的,我不知道。
Perl可以做到这一点。编辑:我知道您正在显示数组的打印输出,
不是php声明数组的静态表示。这只是一个
如何将其转换为可解析内容的示例
如果php能够动态地(我不知道)这样做的话 转换文件,读入$str 按照此顺序,在$str上执行正则表达式。
每个都是全球标志
(?i)([a-z]+)
到“$1”
(?i)(?数组(
}
至)
最后,$newstr=“array(\n$str\n)”
但是,php解析器可以将这样的内容作为静态文件读取
数组。它是如何动态解释为变量的,我不知道。
Perl可以做到这一点。格式从何而来?IMO,如果它不是任何类型的“公共”格式(例如YAML或JSON),则必须推出自己的解析器。如果需要这样做,regex并不总是最好的工具。方法示例:格式从何而来?IMO,如果它不是任何类型的“公共”格式(例如YAML或JSON),您必须推出自己的解析器。如果您需要这样做,regex并不总是这项工作的最佳工具。方法示例:它看起来有点像,但不是有效的JSON!提供一个建议将无效的JSON传递到需要有效JSON的函数中的答案是没有帮助的。只有不需要提问的人才会d理解您的答案。感谢您的回答。我熟悉JSON。输入将来自普通用户,因此我希望保持简单。普通用户输入有效JSON的可能性最小。@WiseGuy comment做到了这一点。它看起来有点像,但不是有效的JSON!提供的答案建议将无效的JSON传递到fu中需要有效JSON的操作没有帮助。只有不需要提问的人才能理解您的答案。谢谢您的回答。我熟悉JSON。输入将来自普通用户,因此我希望保持简单。普通用户输入有效JSON的可能性最小。@WiseGuy comment成功@WiseGuy Y Y你太棒了。非常感谢。将其添加为答案,这样我就可以将其标记为已接受。因为@Martin的解释已经沿着这条路走下去了,我只是想他可以用它来扩展他的答案。请随意在你的答案文本中复制/编辑它,作为链接消失时的永久参考。@MartinJoiner谢谢你的答案。我很高兴