好吧,这似乎是 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 解析代码。