Icon.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php namespace Cate\Lib;
  2. use Dever;
  3. class Icon
  4. {
  5. private $token = 'Y9rt0NCy1H4LZKhxDklRks26';
  6. private $cookie = 'cna=/pxEH/gQiVwCAWUeNvDgjxzu; EGG_SESS_ICONFONT=dzIFRF6UFHpWicZx2_bPclFOIt1cQpz_PZTqMLSyvEnnoZwVqWvK7ht2RRKNNSygMgEcp7bWa98XYDNW-LoTE9nMjNLdOSTa9Y6-Rn5H_k6bjWOLDvZKzgsypKSm2zK0qd29cv9I1s8YqVK5LF4J6g==; ctoken={token}; u=14130793; u.sig=PEpkMN-VcF3I7NkWH0aAoIBpIeCaAQCeG6H89fjtkgk; xlly_s=1; isg=BKioBV44WoUIjnZyvDfQlqLHeZa60QzbxRlelGLZ9CMWvUgnCuHcaz77tVVNjcSz; tfstk=fLXxt1waVz4cpbNGhiNkIfmz3cZuttI22ZSIIFYm1aQRAMuD1s4VW1QdzCDGfr5OyG_L0h4VIaeOyw1mSOIZBhs17o8g07jV0dJ_-yvTKiSq24rxizv_fg_gSTzLKJjVcmxbxgw3b6lglQ86CIObFUTycF96cCZJPhKE1q_6CuIWzH3jlhT_FUtqTcmvSmTtB1Gqp5AuiUDsCtwwMeIqsAM1endACiTRqgXJDILHZ5_u_t_lftX2aShXQgfdW1_QrjYf9HQJtsUKHwQ2fGK1kJopPtIOeI5oljtpHEdChInndiR1wTpchPlFqgLX9LfuarAMHZCe8INzzNIJoN6vNqUkS6jlhQQQrYQw616DFta7pgJAK9h_t2YpjjZ82flwG3AHndkb-EaYy3L3qbcZ_Qxy2eq82flwG3-J-u2o_fRk4';
  7. private $origin = 'https://www.iconfont.cn';
  8. # 获取图标
  9. public function get($name, $method = 'find')
  10. {
  11. $where['search_name'] = $name;
  12. $info = Dever::db('cate/icon')->$method($where);
  13. if (!$info) {
  14. $url = 'https://www.iconfont.cn/api/icon/search.json';
  15. if (strstr($name, '(')) {
  16. $temp = explode('(', $name);
  17. $name = $temp[0];
  18. }
  19. $param['q'] = $name;
  20. $param['sortType'] = 'updated_at';
  21. $param['page'] = '1';
  22. $param['pageSize'] = '20';
  23. $param['fromCollection'] = '-1';
  24. $param['ctoken'] = $this->token;
  25. $param['t'] = time();
  26. $header['cookie'] = str_replace('{token}', $this->token, $this->cookie);
  27. $header['origin'] = $this->origin;
  28. $data = Dever::curl($url, $param, 'post', false, $header)->result();
  29. $data = Dever::json_decode($data);
  30. if (isset($data['data']['icons'])) {
  31. $id = false;
  32. foreach ($data['data']['icons'] as $k => $v) {
  33. if (stristr($v['name'], 'logo')) {
  34. continue;
  35. }
  36. if (stristr($v['path_attributes'], 'FFFFFF')) {
  37. continue;
  38. }
  39. $up = $where;
  40. $up['name'] = $v['name'];
  41. $up['svg'] = $v['show_svg'];
  42. $state = Dever::db('cate/icon')->insert($up);
  43. if (!$id) {
  44. $id = $state;
  45. }
  46. }
  47. if ($method == 'find') {
  48. $info = Dever::db('cate/icon')->$method($id);
  49. } else {
  50. $info = Dever::db('cate/icon')->$method($where);
  51. }
  52. }
  53. }
  54. return $info;
  55. }
  56. # 展示图标
  57. public function show($id)
  58. {
  59. $info = Dever::db('cate/icon')->find($id);
  60. if ($info) {
  61. $pattern = '/(width|height): [^;]+;/';
  62. $replacement = 'width: 30px; height: 30px;';
  63. $info['svg'] = preg_replace($pattern, $replacement, $info['svg']);
  64. return $info['svg'];
  65. } else {
  66. return '';
  67. }
  68. }
  69. }