如何从 Laravel 中的响应 JSON 中删除 HTML 标签 [关闭]

Posted

技术标签:

【中文标题】如何从 Laravel 中的响应 JSON 中删除 HTML 标签 [关闭]【英文标题】:How to remove HTML tags from response JSON in Laravel [closed] 【发布时间】:2021-02-22 12:50:42 【问题描述】:

我正在从事 Laravel rest api 项目项目,遇到了一个问题。我希望我的 ApiController.php 上的函数为我带来 json 对象并删除 html 标签。所以我尝试了这种方法,How to remove html tags form response json laravel

class ApiControllerextends Controller

    //
    public function get()
        $post =  Post::select('post_title','post_content','category_id')
            ->orderBy('created_at','desc')
            ->with('category')
            ->get();
            $categories=Category::all();
        return response()->json($post, 200, [], JSON_UNESCAPED_UNICODE);

我得到的结果

Api Result
    [
        
            "post_title": "post title 1",
            "post_content": "<p>content</p> my content &quot is  :<\/p>\r\n\r\n<p>- content</p>",
            "category_id": "1",
            "category": 
                "id": 1,
                "name": "category1",
            
        ,
    ]

那么如何得到我想要显示的结果

Api Result
        [
            
                "post_title": "post title 1",
                "post_content": "content my content is content",
                "category_id": "1",
                "category": 
                    "id": 1,
                    "name": "category1",
                
            ,
        ]

【问题讨论】:

您似乎没有真正尝试解决这个问题。编造方法 (response()-&gt;strip_tags()???) 不是真诚地努力做好自己的工作。 @miken32 我花了五天多的时间试图找到解决方案,因为我正在通过 laravel 框架,欢迎您的帮助 检查我改进的答案应该可以工作 【参考方案1】:

你应该使用

public function get()
        $post =  Post::select('post_title','post_content','category_id')
            ->orderBy('created_at','desc')
            ->with('category')
            ->get();
            $categories=Category::all();
        foreach ($post as $item)
              $post->post_content=strip_tags($post->post_content);

         
        return response()->json($post, 200, [], JSON_UNESCAPED_UNICODE);

【讨论】:

感谢@Evol Rof 先生的回复,我在尝试此方法时收到此错误代码异常:此集合实例上不存在属性 [post_content]。在第 837 行的文件 C:\laravelproject\vendor\laravel\framework\src\Illuminate\Support\Traits\EnumeratesValues.php 中 @Evol Rof 先生,它工作得很好,非常感谢你的帮助,你是最好的,我刚刚添加了 html_entity_decode foreach ($post as $item) $item->post_content=strip_tags( html_entity_decode($item->post_content));

以上是关于如何从 Laravel 中的响应 JSON 中删除 HTML 标签 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 Laravel 分页响应的元对象中的链接?

如何从 laravel 刀片中的 json 数据创建分页链接

如何在 PHPUnit 中控制台/检查 Laravel 资源的 JSON 响应?

如何使用 Guzzle 和 Laravel 从 JSON 响应中提取单个数组值

从 laravel 中的过程获取结果 - 从响应中删除方括号

从 Laravel Blade 中的 JSON 中选择值