0

私はphpが初めてで、preg_matchを使用して正規表現を記述して、http getから取得したhref値を抽出しようとしています。応答は次のようになります。

{"_links":{"http://a.b.co/documents":{"href":"/docs"}}}

href の値だけを抽出して、次の API に渡したい...つまり /docs. これを抽出する方法を誰か教えてください。http://www.solmetra.com/scripts/regex/index.phpを使用して正規表現をテストしてきました..そして、最後の1日以来運がありませんでした:(

助けていただければ幸いです。

ありがとう、DR

4

3 に答える 3

7

正規表現は必要ありません。

プロパティを使用json_decode()してアクセスしhrefます。

例えば:

$data = json_decode('{"_links":{"http://a.b.co/documents":{"href":"/docs"}}}', true);
echo $data['_links']['http://a.b.co/documents']['href'];

注:可能であれば、JSONをクリーンアップすることをお勧めします。特にキー。

于 2012-05-24T19:24:08.887 に答える
1

HTML解析と同様に、正規表現ではなくjsonパーサーを使用して値を読み取ることをお勧めします。phpのjson_encode関数とjson_decode関数を確認してください。

つまり、href値だけが必要な場合は、ここに、指定した例でそれを実行するための正規表現があります。

preg_match('/"href":"([^"]+)"/',$string,$matches);
$matches[1];// this is the href

正規表現は、必要なものとその形式を正確に把握している場合にのみ適切なツールです。多くの場合、他のパーティのjsonやHTMLを正確に予測することはできません。正規表現で適切に解析できない特定の正当なHTMLおよびjsonの例もあるため、通常はそれらに特化したパーサーを使用します。

于 2012-05-24T19:24:43.583 に答える
1

正規表現を使用しないでくださいjson_decode()。JSON は、正規表現で解析しようとしてもならない文脈自由文法の優れた例です。

これは、まさにこの種の使用に関するPHP.NET のリファレンスです。json_decode()

于 2012-05-24T19:25:08.620 に答える