Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. function get_rating_star_tag($rate, $max = 5, $number = false){
  2. $rate = floatval($rate);
  3. $max = intval($max);
  4. //数字じゃない場合
  5. if (!is_numeric($rate) || !is_numeric($max)) {
  6. return $rate;
  7. }
  8. //レーティングが100より多い場合は多すぎるので処理しない
  9. if ($rate > 100 && $max > 100) {
  10. return $rate;
  11. }
  12.  
  13. $tag = '<div class="ranking-item-rating rating-star">';
  14.  
  15. //小数点で分割
  16. $rates = explode('.', $rate);
  17. if (!isset($rates[0])) {
  18. return $rate;
  19. }
  20. //小数点以下が5かどうか
  21. if (isset($rates[1])) {
  22. $has_herf = intval($rates[1]) == 5;
  23. } else {
  24. $has_herf = false;
  25. }
  26. if ($has_herf) {
  27. $before = intval($rates[0]);
  28. $middle = 1;
  29. $after = $max - 1 - $before;
  30. } else {
  31. $before = intval($rate);
  32. $middle = 0;
  33. $after = $max - $before;
  34. //3.2とかの場合は小数点以下を切り捨てる
  35. $rate = floor(floatval($rate));
  36. }
  37. //スターの出力
  38. for ($j=1; $j <= $before; $j++) {
  39. $tag .= '<span class="fa fa-star"></span>';
  40. }
  41. //半分スターの出力
  42. for ($j=1; $j <= $middle; $j++) {
  43. $tag .= '<span class="fa fa-star-half-o"></span>';
  44. }
  45. //空スターの出力
  46. for ($j=1; $j <= $after; $j++) {
  47. $tag .= '<span class="fa fa-star-o"></span>';
  48. }
  49.  
  50. if ($number) {
  51. $tag .= '<span class="rating-number">'.$rate.'</span>';
  52. }
  53.  
  54. $tag .= '</div>';
  55. return $tag;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement