お世話になります。
楽天などのショッピングサイトのAPIを利用しています。
次の条件で検索をしたいのですが、PHPのコードを書いていただけませんでしょうか。
■前提
・検索キーワードに「○○%OFF」という言葉を含める("vaio 50%OFF")
・固定のキーワード+「○○%OFF」という複数の固定リンクが存在し、検索契機になっている
例:
vaioの商品一覧
割引率から絞り込む:10%OFF 20%OFF ……(←文字リンク)
→この状態は実現済み
■やりたいこと
・例えば「50%OFF」をキーワードとして検索した場合、キーワードに「50%OFF」と含まれているものしか検索されない。しかし実際は、「50%~99%OFF」の商品を検索したい。同じように、10%は「10%~99%OFF」、20%は「20%~99%OFF」としたい。
・そのため、表示されるリンクは
vaioの商品一覧
割引率から絞り込む:10%以上OFF 20%以上OFF ……(←文字リンク)
となるのが理想。
以上、よろしくお願いいたします。
コメント(2件)
一つの方法として"vaio 20%OFF"という文字列から
"vaio 20%OFF"
"vaio 30%OFF"
"vaio 40%OFF"
"vaio 50%OFF"
"vaio 60%OFF"
"vaio 70%OFF"
"vaio 80%OFF"
"vaio 90%OFF"
"vaio 99%OFF"
を生成してそれぞれについて検索するというものです。
正規表現を使えば可能と思われます。
function discount($query, $s=10) {
$d = array();
if (0 < preg_match('/(\d+)\%OFF/i', $query,$m)) {
list($t, $p) = $m;
foreach (array_merge(range($p, 98, $s), array(99)) as $r)
$d[] = str_replace($p, $r, $query);
}
return $d;
}
ただ数%についても検索するとなると検索回数が増えるのが難点です。
もう一つの方法は"vaio %OFF"で検察して割引のあるものを一旦すべて受け取り
指定割引未満のものを捨てる方法です。これなら検索回数は少ないのですが、
Yahooショッピングで"vaio %OFF"を検索するとヒットするのですがその内容が何か変です。
そもそも検索した後でそのデータから割引率を調べることが可能なのか。
Yahooショッピングの商品検索ではdiscontパラメータを指定することでセール中商品絞り込みができるようです。
定価(設定価格)?とセール価格から割引率は計算できますがそれは求めているものとは違うような。
自分でコードも書かず、無茶なお願いをしてしまい申し訳ありませんでした。
正規表現について経験が浅いため、教えていただいた内容を噛み砕いてみたいと思います。
仰るとおり、ヤフーのキーワード検索は結果がなんだかおかしいんです。
ある程度諦めていた部分だったのですが、セール価格と比較するというのは、試してみたいと思います。