PublicData.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Tools;
  3. use function Hyperf\Support\env;
  4. class PublicData
  5. {
  6. /**
  7. * 拼接图片地址
  8. * @param string $imgUrl
  9. * @return string
  10. */
  11. public static function getImageUrl(string $imgUrl)
  12. {
  13. return env("OSS_ENDPOINT")."/".env("BUCKET")."/".$imgUrl;
  14. }
  15. /**
  16. * 截取图片地址
  17. * @param string $imgUrl
  18. * @return string
  19. */
  20. public static function saveImageUrl(string $imgUrl)
  21. {
  22. $baseToRemove = env("OSS_ENDPOINT")."/".env("BUCKET")."/";
  23. // 使用 substr 和 strpos 函数找到并移除基础路径
  24. if (strpos($imgUrl, $baseToRemove) === 0) {
  25. // 如果URL以指定的基础路径开始,则移除该部分
  26. $result = substr($imgUrl, strlen($baseToRemove));
  27. } else {
  28. $result = $imgUrl; // 如果URL不以指定的基础路径开始,则保持原样
  29. }
  30. return $result;
  31. }
  32. /**
  33. * 替换富文本里面图片的
  34. * @param $content
  35. * @return array|string|string[]|null
  36. */
  37. public static function replaceContentImg($content)
  38. {
  39. $searchUrl = env("OSS_ENDPOINT")."/".env("BUCKET")."/";// 获取环境变量中的图片基础URL
  40. $quotedSearchUrl = preg_quote($searchUrl, '/');
  41. // 正则表达式模式,用于匹配img标签中的src属性,并定位$searchUrl的位置
  42. $pattern = '/(<img[^>]+src=")(?:' . $quotedSearchUrl . ')?([^"]*")/';
  43. // 执行替换,确保全部匹配都被处理
  44. $result = preg_replace($pattern, '$1$2', $content);
  45. return $result;
  46. }
  47. /**
  48. * 补全富文本内容的图片地址
  49. * @param $content
  50. * @return array|string|string[]|null
  51. */
  52. public static function completionContentImg($content)
  53. {
  54. $prefix = env("OSS_ENDPOINT")."/".env("BUCKET")."/";// 获取环境变量中的图片基础URL
  55. // 使用preg_quote来转义$prefix中的特殊字符
  56. // 使用preg_quote来转义$prefix中的特殊字符
  57. $quotedPrefix = preg_quote($prefix, '/');
  58. // 正则表达式模式,用于匹配img标签中的src属性
  59. $pattern = '/(<img[^>]+src=")([^"]*")/';
  60. // 替换逻辑:在原src值前加上$prefix
  61. $replacement = '$1' . $prefix . substr('$2', 0, -1); // 移除最后一个",然后加上前缀和"
  62. // 执行替换
  63. $result = preg_replace($pattern, "$1$prefix$2", $content);
  64. return $result;
  65. }
  66. }