まあ、これは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
ここで、文字列の最後に3つのフィールドを追加すると、差はさらに大きくなります(明らかにpreg_match
、一致後は何も気にしないため)。
json_decode: 45s
preg_match: 24s
それでも、このような最適化を適用する前に、アプリケーションの適切なプロファイリングを実行し、これが実際に重大なボトルネックであることを確認してください。そうでない場合は、正規表現関数を使用してJSON解析コードを隠す価値はありません。