10 2 0

求个代码

774 10

本文共计47个字,预计阅读时长0.2分钟。

站长你好呀,可以发下ajax里的message_fmt生成的代码吗,我尝试自己写,写不出树状。

著作权归文章作者所有。 未经作者允许禁止转载!

最新回复 ( 10 )
  • nurl
    4 沙发

    技术那边可能会过段时间发布这部分的开源内容,您可以到时候关注下。

  • Tillreetree
    1 藤椅

    ↓以下代码通过GPL v3开源协议授权↓

    <?php
        if(!function_exists('html_to_obj')){
             /**
             * 此函数将HTML字符串作为参数,并将其转换为DOMDocument对象。
             * 然后使用element_to_obj()函数将DOMDocument对象转换为关联数组。
             * 最后可以用json_encode()函数将数组变成JSON数据。
             * 
             * 注意:如果输入的HTML不带``标签的话,会自动补全。
             * 如果只想要``里的内容,请取结果中的['children'][0]['children']。
             * 
             * @param string $html HTML代码
             * @param bool $return_object 返回对象?
             * @return array|object 包含HTML数据的数组或对象
             */
            function html_to_obj($html,$return_object = false) {
                $dom = new DOMDocument();
                $XML_HEADER = '<' . '?' .'xml encoding="UTF-8">';
                $dom->loadHTML($XML_HEADER. $html,LIBXML_NOERROR); //某些HTML5标签会导致错误发生,用LIBXML_NOERROR压制错误
                if($return_object) {
                    return $dom;
                } else {
                    return element_to_obj($dom->documentElement);
                }
            }
             /**
             * 将HTML对象转换为数组。
             * @param DOMDocument|object $element 要转换的包含HTML数据的对象。
             * @return array 表示HTML元素的关联数组。
             */
            function element_to_obj($element) {
                //var_dump($element);
                //echo $element->tagName, "\n";
                $obj = array( "tag" => $element->tagName );
                foreach ($element->attributes as $attribute) {
                    $obj[$attribute->name] = $attribute->value;
                }
                foreach ($element->childNodes as $subElement) {
                    if ($subElement->nodeType == XML_TEXT_NODE) {
                        if (in_array($element->tagName,array('b', 'big', 'i', 'small', 'tt','abbr', 'acronym', 'cite', 'code', 'dfn', 'em', 'kbd', 'strong', 'samp', 'var','bdo', 'br', 'q', 'span', 'sub',  'sup'
                        ))) {
                            $obj["html"] = $subElement->wholeText;
                        } else {
                            if($subElement->wholeText == "\r\n") {
                                continue;
                            } else {
                                $obj["children"][] = array('tag' => 'txt','html' => $subElement->wholeText);
                            }
                        }
                    } elseif ($subElement->nodeType == XML_CDATA_SECTION_NODE) {
                        $obj["html"] = $subElement->data;
                    }
                    else {
                        $obj["children"][] = element_to_obj($subElement);
                    }
                }
                return $obj;
            }
        }
    ?>
    

    ↑以上代码通过GPL v3开源协议授权↑

    用法:

    <?php
        //最终的帖子内容——HTML解析成JSON
        $_post_message_full = preg_replace_callback('#<(\w+)([^>]*)\s*/>#s', function($matches){
    
            // ignore only these tags
            $xhtml_tags = array('br', 'hr', 'input', 'frame', 'img', 'area', 'link', 'col', 'base', 'basefont', 'param' ,'meta');
     
            // if a element that is not in the above list is empty,
            // it should close like   `<element></element>` (for eg. empty `<title>`)
            return in_array($matches[1], $xhtml_tags) ? "<{$matches[1]}{$matches[2]} />" : "<{$matches[1]}{$matches[2]}></{$matches[1]}>";
        }, $_post_message_full);
        $thread['message_fmt'] = html_to_obj($_post_message_full)['children'][0]['children'];
    ?>
    
  • 鹅mm
    0 板凳
    楼主也要开发app吗
  • 驴仔阿 楼主
    0 查看所有回复 地板
    nurl 技术那边可能会过段时间发布这部分的开源内容,您可以到时候关注下。
    谢谢
  • 驴仔阿 楼主
    0 查看所有回复 6
    Tillreetree &darr;以下代码通过GPL v3开源协议授权&darr; &lt;?php if(!function_exists('html_to_obj')){ ...
    谢谢,太感谢了。
  • 驴仔阿 楼主
    0 查看所有回复 7
    鹅mm 楼主也要开发app吗
    是的,零基础自己捣鼓,也是用的xiuno这个程序尝试做成App
  • 驴仔阿 楼主
    0 查看所有回复 8
    nurl 技术那边可能会过段时间发布这部分的开源内容,您可以到时候关注下。
    App评论回复提交成功后建议有提交成功提醒,我刚刚回复没提醒以为没提交成功然后回复了好几次拉到下面才发现已经提交成功几条消息了。App发帖图片选择也有问题,授权不上。祝本站越做越好!
  • Tillreetree
    0 查看所有回复 9
    驴仔阿 App评论回复提交成功后建议有提交成功提醒,我刚刚回复没提醒以为没提交成功然后回复了好几次拉到下面才发现已经提交成功几条消息了。App发帖图片选择也有问题,授权不上。祝本站越做越好!

    这些问题我们正在加紧解决

  • nurl
    0 查看所有回复 10
    驴仔阿 App评论回复提交成功后建议有提交成功提醒,我刚刚回复没提醒以为没提交成功然后回复了好几次拉到下面才发现已经提交成功几条消息了。App发帖图片选择也有问题,授权不上。祝本站越做越好!
    感谢反馈,我们将在下面的版本修复一些问题,并且增加新功能,谢谢支持~
  • nurl
    1 查看所有回复 11
    驴仔阿 App评论回复提交成功后建议有提交成功提醒,我刚刚回复没提醒以为没提交成功然后回复了好几次拉到下面才发现已经提交成功几条消息了。App发帖图片选择也有问题,授权不上。祝本站越做越好!
    回复帖子目前已有提示,下个版本会修复评论区代码模块可能导致布局过长的问题。感谢反馈!
  • 游客
    11楼

    您需要登录后才可以回帖

    立即登录 立即注册

作者最近主题:
发新帖
热门主题

目录