DMMのアフィリエイト審査合格したが・・・

あふぃふぃふぃふぃ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)
{
    return json_decode(‘”‘.$string.'”‘);
}

PHP: json_decode を使って Unicode エスケープシーケンスを UTF-8 の文字列に変換する – Sarabande.jp

と、json_decodeにダブルコーテーション付けて渡す方法なども有った。
必要なかったのだけども・・・(´;ω;`)

DMMの売上ランキングでもツイートしたかったがそれはまた明日。とほほ。

*1:現在フォロワー4

どのくらい面白かった?

星を押して送信してね

平均 0 / 5. Vote count: 0

是非フォローしてください

最新の情報をお伝えします

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です