rkljw 2 months ago
parent
commit
409e0b742b
3 changed files with 30 additions and 18 deletions
  1. 4 1
      app/JsonRpc/NewsService.php
  2. 21 16
      app/Tools/PublicData.php
  3. 5 1
      runtime/hyperf.pid

+ 4 - 1
app/JsonRpc/NewsService.php

@@ -287,7 +287,10 @@ class NewsService implements NewsServiceInterface
         ];
         $result = Article::where($where)->leftJoin("article_data","article.id","article_data.article_id")->first();
         if($result){
-            return Result::success($result->toArray());
+            $result = $result->toArray();
+            $result['imgurl'] = isset($result['imgurl']) && $result['imgurl']?PublicData::getImageUrl($result['imgurl']):'';
+            $result['content'] = isset($result['content']) && $result['content']?PublicData::completionContentImg($result['content']):'';
+            return Result::success($result);
         }else{
             return Result::error("查询失败",0);
         }

+ 21 - 16
app/Tools/PublicData.php

@@ -40,14 +40,16 @@ class PublicData
      */
     public static function replaceContentImg($content)
     {
-        $richTextContent = $content;
-        $imageBaseUrl = env("OSS_ENDPOINT")."/".env("BUCKET")."/";// 获取环境变量中的图片基础URL
-        $pattern = '/<img\s+src=[\'"]([^\'"]+)[\'"]/i'; // 匹配<img>标签中的src属性值
-        $replacement = '<img src="' . $imageBaseUrl . '$1"'; // 替换为带基础URL的路径
-        $updatedContent = preg_replace($pattern, $replacement, $richTextContent);
-        return $updatedContent;
+        $searchUrl = env("OSS_ENDPOINT")."/".env("BUCKET")."/";// 获取环境变量中的图片基础URL
+        $quotedSearchUrl = preg_quote($searchUrl, '/');
+        // 正则表达式模式,用于匹配img标签中的src属性,并定位$searchUrl的位置
+        $pattern = '/(<img[^>]+src=")(?:' . $quotedSearchUrl . ')?([^"]*")/';
+        // 执行替换,确保全部匹配都被处理
+        $result = preg_replace($pattern, '$1$2', $content);
+        return $result;
     }
 
+
     /**
      * 补全富文本内容的图片地址
      * @param $content
@@ -55,16 +57,19 @@ class PublicData
      */
     public static function completionContentImg($content)
     {
-        // 假设这是从数据库获取的富文本内容
-        $richTextContent = $content;
-        // 从环境变量或配置文件中读取图片基础URL
-        $imageBaseUrl = env("OSS_ENDPOINT")."/".env("BUCKET")."/"; // 这里应该用getenv('IMAGE_BASE_URL')等方法获取实际值
-        // 使用正则表达式匹配<img>标签中的src属性值,并替换为完整URL
-        $pattern = '/<img\s+[^>]*src=[\'"]([^\'"]+\.[a-z]{3,4})[\'"][^>]*>/i';
-        $replacement = '<img src="' . $imageBaseUrl . '$1"'; // 注意这里的$1表示匹配到的第一个分组,即原始的src值
+        $prefix = env("OSS_ENDPOINT")."/".env("BUCKET")."/";// 获取环境变量中的图片基础URL
+        // 使用preg_quote来转义$prefix中的特殊字符
+        // 使用preg_quote来转义$prefix中的特殊字符
+        $quotedPrefix = preg_quote($prefix, '/');
+
+        // 正则表达式模式,用于匹配img标签中的src属性
+        $pattern = '/(<img[^>]+src=")([^"]*")/';
+
+        // 替换逻辑:在原src值前加上$prefix
+        $replacement = '$1' . $prefix . substr('$2', 0, -1); // 移除最后一个",然后加上前缀和"
+
         // 执行替换
-        $updatedContent = preg_replace($pattern, $replacement, $richTextContent);
-        // 输出更新后的内容
-        return $updatedContent;
+        $result = preg_replace($pattern, "$1$prefix$2", $content);
+        return $result;
     }
 }

+ 5 - 1
runtime/hyperf.pid

@@ -1 +1,5 @@
-91964
+<<<<<<< Updated upstream
+91964
+=======
+15373
+>>>>>>> Stashed changes