DataHelper.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. /**
  3. * lemocms
  4. * ============================================================================
  5. * 版权所有 2018-2027 lemocms,并保留所有权利。
  6. * 网站地址: https://www.lemocms.com
  7. * ----------------------------------------------------------------------------
  8. * 采用最新Thinkphp6实现
  9. * ============================================================================
  10. * Author: yuege
  11. * Date: 2019/9/22
  12. */
  13. namespace lemo\helper;
  14. class DataHelper
  15. {
  16. /**
  17. * 输出xml字符
  18. * @param array $values
  19. * @return string|bool
  20. **/
  21. public static function arrToXml($values)
  22. {
  23. if (!is_array($values) || count($values) <= 0) {
  24. return false;
  25. }
  26. $xml = "<xml>";
  27. foreach ($values as $key => $val) {
  28. if (is_numeric($val)) {
  29. $xml .= "<" . $key . ">" . $val . "</" . $key . ">";
  30. } else {
  31. $xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">";
  32. }
  33. }
  34. $xml .= "</xml>";
  35. return $xml;
  36. }
  37. /**
  38. * 将xml转为array
  39. * @param string $xml
  40. * @return array|false
  41. */
  42. public static function xmlToArray($xml)
  43. {
  44. if (!$xml) {
  45. return false;
  46. }
  47. // 检查xml是否合法
  48. $xml_parser = xml_parser_create();
  49. if (!xml_parse($xml_parser, $xml, true)) {
  50. xml_parser_free($xml_parser);
  51. return false;
  52. }
  53. //将XML转为array
  54. //禁止引用外部xml实体
  55. libxml_disable_entity_loader(true);
  56. $data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
  57. return $data;
  58. }
  59. /**
  60. * 将array或者对象转为json
  61. * @param string $xml
  62. * @return array|false
  63. */
  64. public static function arrToJson($array)
  65. {
  66. if(is_array($array)){
  67. return json_encode($array);
  68. } elseif(is_object($array)){
  69. $json = json_encode($array, JSON_FORCE_OBJECT);
  70. return $json;
  71. }else{
  72. return '';
  73. }
  74. }
  75. /**
  76. * 将OBJ或者对象转为ARRAY
  77. * @param string $xml
  78. * @return array|false
  79. */
  80. public static function objToArray($object)
  81. {
  82. $array = array();
  83. if (is_object($object)) {
  84. foreach ($object as $key => $value) {
  85. $array[$key] = $value;
  86. }
  87. } else {
  88. $array = $object;
  89. }
  90. return $array;
  91. }
  92. /**
  93. * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】
  94. * @param string $text 二维码包含的信息,可以是数字、字符、二进制信息、汉字。不能混合数据类型,数据必须经过UTF-8 URL-encoded
  95. * @param string $widthHeight 生成二维码的尺寸设置
  96. * @param string $ecLevel 可选纠错级别,QR码支持四个等级纠错,用来恢复丢失的、读错的、模糊的、数据。
  97. * L-默认:可以识别已损失的7%的数据
  98. * M-可以识别已损失15%的数据
  99. * Q-可以识别已损失25%的数据
  100. * H-可以识别已损失30%的数据
  101. *
  102. * @param string $margin 生成的二维码离图片边框的距离
  103. *
  104. * @return string
  105. */
  106. public static function toQRimg($text, $widthHeight = '150', $ecLevel = 'L', $margin = '0')
  107. {
  108. $chl = urlencode($text);
  109. return "http://chart.apis.google.com/chart?chs={$widthHeight}x{$widthHeight}&cht=qr&chld={$ecLevel}|{$margin}&chl={$chl}";
  110. }
  111. }