PublicData.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. $richTextContent = $content;
  40. $imageBaseUrl = env("OSS_ENDPOINT")."/".env("BUCKET")."/";// 获取环境变量中的图片基础URL
  41. $pattern = '/<img\s+src=[\'"]([^\'"]+)[\'"]/i'; // 匹配<img>标签中的src属性值
  42. $replacement = '<img src="' . $imageBaseUrl . '$1"'; // 替换为带基础URL的路径
  43. $updatedContent = preg_replace($pattern, $replacement, $richTextContent);
  44. return $updatedContent;
  45. }
  46. /**
  47. * 补全富文本内容的图片地址
  48. * @param $content
  49. * @return array|string|string[]|null
  50. */
  51. public static function completionContentImg($content)
  52. {
  53. // 假设这是从数据库获取的富文本内容
  54. $richTextContent = $content;
  55. // 从环境变量或配置文件中读取图片基础URL
  56. $imageBaseUrl = env("OSS_ENDPOINT")."/".env("BUCKET")."/"; // 这里应该用getenv('IMAGE_BASE_URL')等方法获取实际值
  57. // 使用正则表达式匹配<img>标签中的src属性值,并替换为完整URL
  58. $pattern = '/<img\s+[^>]*src=[\'"]([^\'"]+\.[a-z]{3,4})[\'"][^>]*>/i';
  59. $replacement = '<img src="' . $imageBaseUrl . '$1"'; // 注意这里的$1表示匹配到的第一个分组,即原始的src值
  60. // 执行替换
  61. $updatedContent = preg_replace($pattern, $replacement, $richTextContent);
  62. // 输出更新后的内容
  63. return $updatedContent;
  64. }
  65. }