繁体   English   中英

从这个特定文件中获取数据的最有效方法是什么?

[英]What's the most efficient way to grab data from this particular file?

我正在尝试考虑解析存储名称,学生资格和Facebook ID的文件的最有效方法。 我正在尝试获取fbid值,所以对于这个特定的行,它将是:1281766051。我考虑过使用正则表达式,但我有点迷失在哪里开始 我考虑将所有这些数据添加到一个数组并切断它,但它似乎效率低下。

{"name":"John Smith","studentid":"10358595","fbid":"1284556651"}

如果帖子太简短,我道歉。 我会尽我所能添加任何我可能错过的东西。 谢谢。

好吧,这似乎是JSON,所以正确的方法是

$json = json_decode($str);
$id = $json->fbid;

正则表达式解决方案如下所示:

preg_match('/"fbid":"(\d+)"/', $str, $matches);
$id = $matches[1];

但我不能告诉你我的哪个更有效率。 你必须对它进行分析。

更新:

我对执行时间进行了非常基本的检查(没有太可靠,我只测量了两个代码的1,000,000次执行)。 对于您的特定输入,差异可以忽略不计:

json_decode: 27s
preg_match:  24s

但是,如果您的JSON记录变大(例如,如果我在字符串的开头添加3个字段(以便两个解决方案都受到影响)),则差异变得非常明显:

json_decode: 46s
preg_match:  30s

现在,如果我将三个字段添加到字符串的末尾,则差异会变得更大(显然,因为preg_match在匹配后不关心任何事情):

json_decode: 45s
preg_match:  24s

即便如此,在应用这样的优化之前,请对应用程序进行适当的分析,并确保这实际上是一个至关重要的瓶颈。 如果不是,则不值得使用正则表达式函数来模糊JSON解析代码。

这是JSON,使用:

$str = '{"name":"John Smith","studentid":"10358595","fbid":"1284556651"}';
$data = json_decode($str);

echo $data->fbid;

干杯

使用json_decode

$txt='{"name":"John Smith","studentid":"10358595","fbid":"1284556651"}';
$student =json_decode($txt);
echo $student->fbid;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM