あふぃふぃふぃふぃw 皆さん小銭を愛しておりますか? その小銭にすらならないアレ情報ですw
DMMのアフィリエイト合格しました~twitter*1のURLで~w
でさ、フロアって概念があるみたいなのよ。
サイトが一般(DMM.com)かアダルト(FANZA)か2種類あって、それぞれに複数のサービスがあり、サービスにまた複数のフロアが付いてる感じ。
実際に取ったのはこんな感じ
サクッと取れるじゃろ、と思っていたらハマった・・・。文字コードである。
いや、結果から言うと文字コードを意識する必要0だったんだけど、途中でうまく出ないときに取得したデータ見たら、ユニコードエスケープ列(\UXXXX)になってて、これが原因じゃね!? といろいろやってたらJSONはそもそもエスケープするのが仕様なのでそのままで良かったという・・・(´;ω;`)
ツイキャスで30分でできるだろう、と思って配信してたらハマったwwwwww
<?php //UTF-8のおまじない header("Content-type: text/html; charset=UTF-8"); mb_language("Japanese"); mb_internal_encoding("UTF-8"); ?> <!doctype html> <html> <head> <html lang="ja"> <meta charset="UTF-8"> </head> <body> <?php // トークンを指定 $apiid = "xxxxxxxxxx"; $affiliateid = "xxxxx-990"; $url = "https://api.dmm.com/affiliate/v3/FloorList?api_id={$apiid}&affiliate_id={$affiliateid}"; // JSONデータを取得・エンコードしオブジェクトに変換 $json = file_get_contents($url); $obj = json_decode($json); $sites = $obj->result->site; foreach($sites as $site){ echo "<p>name: " . $site->name . "</p>"; echo "<p>code: " . $site->code . "</p>"; $services=$site->service; foreach( $services as $service ){ echo "<p>service:name: " . $service->name . "</p>";; echo "<p>service:code: " . $service->code . "</p>";; $floors=$service->floor; foreach( $floors as $floor ){ echo "<p>floor:id: " . $floor->id . "</p>";; echo "<p>floor:name: " . $floor->name . "</p>";; echo "<p>floor:code: " . $floor->code . "</p>";; } } } ?> </body> </html>
<?php $str = preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/', function ($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE'); }, $str); ?>
のstrに文字列突っ込めばいいみたい。
情報元
php — 「\ u00ed」などのUnicodeエスケープシーケンスを適切なUTF-8エンコード文字にデコードする方法は?
他にも
$string = 'あ\u3042い\u3044う\u3046え\u3048お\u304a';
function unicode_sequence_decode($string)
PHP: json_decode を使って Unicode エスケープシーケンスを UTF-8 の文字列に変換する - Sarabande.jp
{
return json_decode('"'.$string.'"');
}
と、json_decodeにダブルコーテーション付けて渡す方法なども有った。
必要なかったのだけども・・・(´;ω;`)
DMMの売上ランキングでもツイートしたかったがそれはまた明日。とほほ。
*1:現在フォロワー4