百度编辑器UEditor图片上传路径更改方法

 更新时间:2016年11月25日 15:47  点击:1970
百度编辑器上传图片是保存的图片很是有问题,便全部保存在了upload目录下,这样的话图片一多就不好管理,下面我来告诉你修改UEditor图片上传路径方法。

找到ueditor/php目录下的getRemoteImage.php,

法一:将第12行的savePath" => "upload/" 修改为

 代码如下 复制代码

1 "savePath" => "upload/".date("Ymd")."/"

法二:将第80行

 代码如下 复制代码

1 $tmpName = $savePath . rand( 1 , 10000 ) . time() . strrchr( $imgUrl , '.' );

修改为

 代码如下 复制代码

1 $tmpName = $savePath . date("Ymd")."/".rand( 1 , 10000 ) . time() . strrchr( $imgUrl , '.' );

提示,上面生成的日期为20130407这样,如果想更详细我们可以

将第12行的savePath" => "upload/" 修改为

 代码如下 复制代码
1 "savePath" => "upload/".date("Y")."/.date("M")."/".date("Y");

这样更好管理

在php中我们截取字符串可以使用自带的函数,但是自带的函数不支持中文截取,如果需要截取中文字符串我们需要现做一些操作,下面我来给各位朋友介绍。

针对GB2312的代码

 代码如下 复制代码

//$str是要截取的字符串
//$start是要截取的字符的开始位置
//$len是指要截取的字符长度
function sub_str($str, $start, $len) {
        $tmpstr = "";
        $strlen = $start + $len;
        for($i = 0; $i < $strlen; $i++) {
            if(ord(substr($str, $i, 1)) > 0xa0) {
                $tmpstr .= substr($str, $i, 2);
                $i++;
            } else
                $tmpstr .= substr($str, $i, 1);
        }
        return $tmpstr."...";
}

针对uft8

 代码如下 复制代码

<?php
//截取utf8字符串
function utf8substr($str, $from, $len)
{
    return preg_replace('#^(?:[x00-x7f]|[xc0-xff][x80-xbf]+){0,'.$from.'}'.
                       '((?:[x00-x7f]|[xc0-xff][x80-xbf]+){0,'.$len.'}).*#s',
                       '$1',$str);
}
?>

上面的方法肯定不实用,因为我希望可以自动识别支持任何编码的字符串截取,后来找到一个还算可以的分享给各位朋友。

 代码如下 复制代码

< ?php
/**
 * @package     BugFree
 * @version     $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
 *
 *
 * Return part of a string(Enhance the function substr())
 *
 * @author                  Chunsheng Wang <wwccss@263.net>
 * @param string  $String  the string to cut.
 * @param int     $Length  the length of returned string.
 * @param booble  $Append  whether append "...": false|true
 * @return string           the cutted string.
 */
function sysSubStr($String,$Length,$Append = false)
{
    if (strlen($String) < = $Length )
    {
        return $String;
    }
    else
    {
        $I = 0;
        while ($I < $Length)
        {
            $StringTMP = substr($String,$I,1);
            if ( ord($StringTMP) >=224 )
            {
                $StringTMP = substr($String,$I,3);
                $I = $I + 3;
            }
            elseif( ord($StringTMP) >=192 )
            {
                $StringTMP = substr($String,$I,2);
                $I = $I + 2;
            }
            else
            {
                $I = $I + 1;
            }
            $StringLast[] = $StringTMP;
        }
        $StringLast = implode("",$StringLast);
        if($Append)
        {
            $StringLast .= "...";
        }
        return $StringLast;
    }
}

$String = "www.111cn.net 走在中国自动化测试的前沿";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?>

我们要处理的是判断一个远程服务器文件是否是存在,而不是自己本同服务器目录了,如果判断远程服务器的文件上否存在我们需要使用到curl_init,fsockopen,fopen方法,下面我来给大家举例说明。

fopen函数

fopen() 函数打开文件或者 URL。

如果打开失败,本函数返回 FALSE。

语法

fopen(filename)filename 规定要打开的文件或 URL。

从这个函数的说明来看是支持url的,代码如下

 代码如下 复制代码

<?php
    $url = 'http://www.xxx.com/images/test.jpg';
 
    if( @fopen( $url, 'r' ) )
    {
        echo 'File Exits';
    }
    else
    {
        echo 'File Do Not Exits';
    }
 ?>

这样的写个人很不推荐哦,因为它这们很是浪费服务器性能资源的。

curl函数
例子

 代码如下 复制代码
<?php
    $url2 = 'http://www.111cn.net/ test.jpg';
 
    $ch = curl_init();
    $timeout = 10;
    curl_setopt ($ch, CURLOPT_URL, $url2);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
 
    $contents = curl_exec($ch);
    //echo $contents;
    if (preg_match("/404/", $contents)){
        echo '文件不存在';
    }
?>

小提示,不过此函数需我服务器开启才可用哦

推荐使用此方法哦,还有一种利用fsockopen 这种是专业的远程采集版了,

 代码如下 复制代码

 $url = "http://www.111cn.net /.gif";
 
    $info = parse_url($url);
    $fp = fsockopen($info['host'], 80,$errno, $errstr, 30);
    fputs($fp,"GET {$info['path']} HTTP/1.1rn");
    fputs($fp, "Host: {$info['host']}rn");
    fputs($fp, "Connection: closernrn");
    $headers = array();
    while(!feof($fp)) {
    $line = fgets($fp);
    if($line != "rn") {
    $headers[] = $line;
    }else {
    break;
    }
    }
 
    echo "<pre>";
    print_r($headers);

小提示,不过此函数需我服务器开启才可用哦

在开发中我们可以会经常碰到需要生成系统随机密码或者是登陆验证码之类的,这些数字我们肯定需要随机生成的不能定义的,下面我来总结了一些常用的在php中生成随机字符的代码,有需要的朋友可参考。

随机生成数数字

mt_rand()函数

 代码如下 复制代码

$num = mt_rand(0,9999999);

但如果我想随机生成字符串怎么操作,网站找到一个方法。

 代码如下 复制代码

function random($length) {
     srand(date("s"));
     $possible_charactors = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     $string = "";
     while(strlen($string)<$length) {
          $string .= substr($possible_charactors,(rand()%(strlen($possible_charactors))),1);
     }
     return($string);
}

例2

 代码如下 复制代码

function random_string($length, $max=FALSE)
{
  if (is_int($max) && $max > $length)
  {
    $length = mt_rand($length, $max);
  }
  $output = '';
 
  for ($i=0; $i<$length; $i++)
  {
    $which = mt_rand(0,2);
   
    if ($which === 0)
    {
      $output .= mt_rand(0,9);
    }
    elseif ($which === 1)
    {
      $output .= chr(mt_rand(65,90));
    }
    else
    {
      $output .= chr(mt_rand(97,122));
    }
  }
  return $output;
}

例3

 代码如下 复制代码

<?php
// 说明:php 中生成随机字符串的方法
// 整理:http://www.111cn.net
function genRandomString($len)
{
    $chars = array(
        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", 
        "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", 
        "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", 
        "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", 
        "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", 
        "3", "4", "5", "6", "7", "8", "9"
    );
    $charsLen = count($chars) - 1;
    shuffle($chars);    // 将数组打乱
     
    $output = "";
    for ($i=0; $i<$len; $i++)
    {
        $output .= $chars[mt_rand(0, $charsLen)];
    }
    return $output;
}
$str = genRandomString(25);
$str .= "<br />";
$str .= genRandomString(25);
$str .= "<br />";
$str .= genRandomString(25);
echo $str;
?> 

 
注:传入的参数是你想要生成的随机字符串的长度。

我们现在在各大网站论坛都可以看到点击一个QQ图标就可以利用自己的QQ号在网站进行登录了,下面我来告诉你一段QQ登录集成到自己网站php代码,有需要的朋友可参考。

1.打开open.qq.com   添加创建应用:-》输入常规的数据  你会看到对应的APP ID和KEY值,这是对你身份证的唯一的验证

2.打开 http://connect.qq.com/manage/  点击->添加网站->输入相关信息  这里比较特别注意的是,回调地址那里填上你域名就可以了以上申核需要一到两天时间,耐心等待。。。

3.打开 http://wiki.opensns.qq.com/wiki/%E3%80%90QQ%E7%99%BB%E5%BD%95%E3%80%91%E7%BD%91%E7%AB%99%E6%8E%A5%E5%85%A5找到SDK库下载,我在这里下载是官方的php SDK包,如果你的虚拟空间file_get_contents不技持https,可以考虑用curl函数来替代,好多童鞋常常因为获取不到access_token也就是这个原因。任何一个包不是一气呵成了,还需你配置相关的配置,这个繁索的调试过程我就在这里展开谈了。说说原理->通过你的网站登陆QQ state和scope->获得access_token->再获得每个QQ唯一的身份ID  openid

4.在这里你调试成功后,获得ID后,还需和你当前网站帐号绑定,才能下次登陆的时候自动去识别你的相关绑定帐号内容

常见问题:

1.Warning: session_start() [function.session-start]: open(/tmpsess_s9b1ahi6vnvc0pfl2e0dcd0l10, O_RDWR) failed: 解决方法:No such file or directory (2) inD:powhostbbcarblogwebtestqqSDKcommsession.php on line 196

找到sssion.php session_save_path  加上注释//,注释掉设置路径

2.Notice: file_get_contents() [function.file-get-contents]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? inD:powhostbbcarblogwebtestqqSDKcommutils.php on line 37

解决方法:

找到 Utils.php  function get_url_contents 函数内容直接用下面代码替代,因为file_get_content默认不支持访问https,如果要支持需配置php.ini,激活 php_openssl.dll 模块,这个大家百度配置一下便可

php代码

 代码如下 复制代码

$ch = curl_init();   
curl_setopt($ch, CURLOPT_URL,$url);   
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);   
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
$result = curl_exec($ch);   
return $result

下面是一个完整的实例

下面是一个QQ登录API示范接口。程序为PHP、具体代码如下:

 代码如下 复制代码

<?php /** 
* 申请http://connect.opensns.qq.com/apply 
* 列表http://connect.opensns.qq.com/my 
*/ 
session_start();  
$qq_oauth_config = array(  
    'oauth_consumer_key'=>'*******',//APP ID  
    'oauth_consumer_secret'=>'******************',//APP KEY  
    'oauth_callback'=>"http://www.sunnyi.cn/qq.php?action=reg",//这里修改为当前脚本,但是要保留?action=reg  
    'oauth_request_token_url'=>"http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token",  
    'oauth_authorize_url'=>'http://openapi.qzone.qq.com/oauth/qzoneoauth_authorize',  
    'oauth_request_access_token_url'=>'http://openapi.qzone.qq.com/oauth/qzoneoauth_access_token',  
    'user_info_url' => 'http://openapi.qzone.qq.com/user/get_user_info',  
);  
$action = isset($_GET['action']) ? $_GET['action'] : '';  
 
 
$qq = new qq_oauth($qq_oauth_config);  
switch($action){  
    //用户登录 Step1:请求临时token  
    case 'login':  
        $token = $qq->oauth_request_token();  
        $_SESSION['oauth_token_secret'] = $token['oauth_token_secret'];  
        $qq->authorize($token['oauth_token']);  
    break;  
    //Step4:Qzone引导用户跳转到第三方应用  
    case 'reg':  
        $qq->register_user();  
        $access_token = $qq->request_access_token();  
        if($token = $qq->save_access_token($access_token)){  
            //保存,一般发给用户cookie,以及用户入库  
            //var_dump($token);  
            $_SESSION['oauth_token'] = $token['oauth_token'];  
            $_SESSION['oauth_token_secret'] = $token['oauth_token_secret'];  
            $_SESSION['openid'] = $token['openid'];  
            header('Content-Type: text/html; charset=utf-8');  
            $user_info = json_decode($qq->get_user_info());  
            if($user_info->ret!=0){  
                exit("获取头像昵称时发生错误".$user_info->msg);  
            } else {  
                echo 'QQ昵称:',$user_info->nickname,  
                '<img src="',$user_info->figureurl,'" />',  
                '<img src="',$user_info->figureurl_1,'" />',  
                '<img src="',$user_info->figureurl_2,'" />';  
            }  
              
        }  
    break;  
    default :  
}  
 
 
class qq_oauth{  
    private $config;  
    function __construct($config){  
        $this->config = $config;  
    }  
    /** 
     * 返回配置 
     * @param string $name 
     *  
     */ 
    function C($name){  
        return isset($this->config[$name]) ?  $this->config[$name] : FALSE;  
    }  
    /** 
     * 构建请求URL 
     * @param string $url 
     * @param array $params 
     * @param string $oauth_token_secret 
     *  
     */ 
    function build_request_uri($url,$params=array(),$oauth_token_secret=''){  
        $oauth_consumer_key = $this->C('oauth_consumer_key');  
        $oauth_consumer_secret = $this->C('oauth_consumer_secret');  
          
        $params = array_merge(array(  
            'oauth_version'=>'1.0',  
            'oauth_signature_method'=>'HMAC-SHA1',  
            'oauth_timestamp'=>time(),  
            'oauth_nonce'=>rand(1000,99999999),  
            'oauth_consumer_key'=>$oauth_consumer_key,  
        ),$params);  
        $encode_params = $params;  
        ksort($encode_params);  
        $oauth_signature = 'GET&'.urlencode($url).'&'.urlencode(http_build_query($encode_params));  
        $oauth_signature = base64_encode(hash_hmac('sha1',$oauth_signature,$oauth_consumer_secret.'&'.$oauth_token_secret,true));  
        $params['oauth_signature'] = $oauth_signature;  
        return $url.'?'.http_build_query($params);  
    }  
    /** 
     * 校验回调是否返回约定的参数  
     */ 
    function check_callback(){  
        if(isset($_GET['oauth_token']))  
            if(isset($_GET['openid']))  
                if(isset($_GET['oauth_signature']))  
                    if(isset($_GET['timestamp']))  
                        if(isset($_GET['oauth_vericode']))  
                            return true;  
        return false;  
    }  
     
    function get_contents($url){  
        $curl = curl_init();  
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);  
        curl_setopt($curl,CURLOPT_URL,$url);  
        return curl_exec($curl);  
    }  
    /** 
     * Step1:请求临时token、Step2:生成未授权的临时token 
     */ 
    function oauth_request_token(){  
        $url = $this->build_request_uri($this->C('oauth_request_token_url'));  
        $tmp_oauth_token = $this->get_contents($url);  
        parse_str($tmp_oauth_token);  
        /* 
        oauth_token 未授权的临时token 
        oauth_token_secret  token的密钥,该密钥仅限于临时token 
        error_code  错误码 
        */ 
        if(isset($error_code)) exit($error_code);  
        return array(  
            'oauth_token'=>$oauth_token,  
            'oauth_token_secret'=>$oauth_token_secret 
        );  
    }  
    /** 
     * Step3:引导用户到Qzone的登录页 
     * @param string $oauth_token 未授权的临时token 
     */ 
    function authorize($oauth_token){  
        $str = "HTTP/1.1 302 Found";  
        header($str);  
        $url = $this->C('oauth_authorize_url');  
        $query_strings = http_build_query(array(  
            'oauth_consumer_key'=>$this->C('oauth_consumer_key'),  
            'oauth_token'=>$oauth_token,  
            'oauth_callback'=>$this->C('oauth_callback'),  
        ));  
        header('Location: '.$url.'?'.$query_strings);  
    }  
    /** 
     * Step4:Qzone引导用户跳转到第三方应用 
     * @return bool 验证是否有效  
     */ 
    function register_user(){  
        /* 
         * oauth_token  已授权的临时token 
         * openid   腾讯用户对外的统一ID,该OpenID与用户QQ号码一一对应 
         * oauth_signature  签名值,方便第三方来验证openid以及来源的可靠性。 
         *      使用HMAC-SHA1算法: 
         *      源串:openid+timestamp(串中间不要添加'+'符号) 
         *      密钥:oauth_consumer_secret 
         * timestamp    openid的时间戳 
         * oauth_vericode   授权验证码。 
         */ 
        if($this->check_callback()){  
            //校验签名  
            $signature = base64_encode(hash_hmac('sha1',$_GET['openid'].$_GET['timestamp'],$this->C('oauth_consumer_secret'),true));  
            if(!empty($_GET['oauth_signature']) && $signature==$_GET['oauth_signature']){  
                $_SESSION['oauth_token'] = $_GET['oauth_token'];  
                $_SESSION['oauth_vericode'] = $_GET['oauth_vericode'];  
                return;  
            }  
        }  
        //校验未通过  
        exit('UNKNOW REQUEST');  
    }  
    /** 
     * Step5:请求access token  
     */ 
    function request_access_token(){  
        $url = $this->build_request_uri($this->C('oauth_request_access_token_url'),array(  
            'oauth_token'=>$_SESSION['oauth_token'],  
            'oauth_vericode'=>$_SESSION['oauth_vericode']  
        ),$_SESSION['oauth_token_secret']);  
        return $this->get_contents($url);  
    }  
    /** 
     * Step6:生成access token (保存access token) 
     *  
     * 关于access_token 
     * 目前access_token(及其secret)是长期有效的,和某一个openid对应,目前可以支持线下获取该openid的信息。  
     * 当然,用户有权限在Qzone这边删除对第三方的授权,此时该access_token会失效,需要重新走整个流程让用户授权。 
     * 以后会逐步丰富access_token的有效性,长期有效、短期有效、用户登录时才有效等。 
     */ 
    function save_access_token($access_token_str){  
        parse_str($access_token_str,$access_token_arr);  
        if(isset($access_token_arr['error_code'])){  
            return FALSE;  
        } else {  
            return $access_token_arr;  
        }  
    }  
    /** 
     * 目前腾讯仅开放该API 
     * 获取登录用户信息,目前可获取用户昵称及头像信息。 
     * http://openapi.qzone.qq.com/user/get_user_info 
     */ 
    function get_user_info(){  
        $url = $this->build_request_uri($this->C('user_info_url'),array(  
            'oauth_token'=>$_SESSION['oauth_token'],  
            'openid'=>$_SESSION['openid'],  
        ),$_SESSION['oauth_token_secret']);  
        return $this->get_contents($url);  
    }  
}  

[!--infotagslink--]

相关文章

  • PHP swfupload图片上传的实例代码

    PHP代码如下:复制代码 代码如下:if (isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) { $upload_file = $_FILES['Filedata']; $fil...2013-10-04
  • 百度编辑器ueditor修改图片上传默认路径

    本案例非通用,仅作笔记以备用 修改后的结果是 百度编辑器里上传的图片路径为/d/file/upload1...2014-07-03
  • Java实现将图片上传到webapp路径下 路径获取方式

    这篇文章主要介绍了Java实现将图片上传到webapp路径下 路径获取方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-11-12
  • php+js实现异步图片上传实例分享

    upload.php复制代码 代码如下:<?phpif(isset($_FILES["myfile"])){$ret = array();$uploadDir = 'images'.DIRECTORY_SEPARATOR.date("Ymd").DIRECTORY_SEPARATOR;$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.$upl...2014-06-07
  • 超漂亮的Bootstrap 富文本编辑器summernote

    Summernote 是一个简单,灵活,所见即所得(WYSIWYG)的编辑器,基于 jQuery 和 Bootstrap 构建。对bootstrap 文本编辑器相关知识感兴趣的朋友一起学习吧...2016-04-06
  • 帝国CMS会员注册字段增加编辑器、发送短消息改为编辑框

    通过本教程可以实现帝国CMS后台给前台注册用户发消息,把内容输入框改为编辑器,可上传图片,等打开文件\e\admin\member\SendMsg.php 大约84行<textarea name="msgtext" cols="6...2016-01-27
  • ASP.NET百度Ueditor编辑器实现上传图片添加水印效果

    这篇文章主要给大家介绍了ASP.NET百度Ueditor编辑器1.4.3这个版本实现上传图片添加水印效果的相关资料,文中通过图文及示例代码介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。...2021-09-22
  • 利用Yii框架实现图片上传

    这篇文章主要介绍了Yii框架实现图片上传的方法,结合实例形式较为详细的分析了Yii框架实现图片上传功能的具体步骤与相关操作技巧,需要的朋友可以参考下 本文实例...2017-07-06
  • php文件上传(强大文件图片上传类)

    这款文件上传实用代码,可以方便的上传你指定的文件或图片,同时也可以快速的限制上传图片文件类或大小。 /* * created on 2010-6-21 * * the class for image...2016-11-25
  • C# RichTextBox制作文本编辑器

    这篇文章主要为大家详细介绍了C# RichTextBox制作文本编辑器的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • KindEditor编辑器调用方法

    KindEditor编辑器调用方法,这个编辑器可使用到任何语言中,他是一个纯js的编辑器,但它默认的编辑是utf-8如果是gb2312编辑的朋友就是KindEditor.js打开,重保存为gb2312...2016-11-25
  • C#实现简单文本编辑器

    这篇文章主要为大家详细介绍了C#实现简单文本编辑器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • 同一页面放多个百度编辑器 Ueditor 并用PHP获取 Ueditor 的值的实例

    UEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,本文我们解决在同一个页面上如何放多个 UEditor ,然后再用 PHP 接收 UEditor 的值...2016-11-25
  • PHP编辑器PhpStrom运行缓慢问题

    小编推荐的这篇文章介绍了PHP编辑器PhpStrom运行缓慢问题的解决办法,有兴趣的同学快来看看吧 最近在使用phpstorm开发项目的时候,在加载文件运行时,不管有多大,如果项...2017-07-06
  • php多文件上传 多图片上传程序代码

    多文件上传其实就包括了图片及各种文件了,下面介绍的是一款PHP多文件上传类,一共两个文件,upp.php 和 uploadFile.php,upp.php,这是前台所显示的表单文件了,默认的是四个...2016-11-25
  • php 图片上传代码(具有生成缩略图与增加水印功能)

    这款图片上传源代码是一款可以上传图片并且还具有给上传的图片生成缩略图与增加水印功能哦,可以说是一款完美的图片上传类哦。 代码如下 复制代码 ...2016-11-25
  • php图片上传类,支持加水印,生成略缩图

    分享一个网友写的php图片上传类,支持加水印,生成略缩图功能哦,面是配置和可以获取的一些信息(每一个配置信息都有默认值,如无特殊需要,可以不配置): 代码如下 ...2016-11-25
  • php实现多图片上传程序代码

    php实现多图片上传方法非常的简单只要遍历数组然后使用上传函数就可以搞定了,可以说几句代码就可以实现,但对于新手来讲还是有点,下面一起来看看。 在做图片上传时用...2016-11-25
  • php 图片上传代码例子

    下面来为你免费提供一款php 图片上传代码哦,如果你正在找文件上传的图片代码就进来看看吧,这是一款只支持jpg,gif,png,swf文件上传的php实例代码 <?php 代...2016-11-25
  • 浅析Yii2集成富文本编辑器redactor实例教程

    yii2集成另外一个强大好用的富文本编辑器Redactor。接下来通过本文给大家介绍Yii2集成富文本编辑器redactor实例教程,感兴趣的朋友一起学习吧...2016-04-28