GVKun编程网logo

PHP去掉从word直接粘贴过来的没有用格式的函数(php 去除html)

29

本文将为您提供关于PHP去掉从word直接粘贴过来的没有用格式的函数的详细介绍,我们还将为您解释php去除html的相关知识,同时,我们还将为您提供关于AsyncResult类的使用转载粘贴过来的、c

本文将为您提供关于PHP去掉从word直接粘贴过来的没有用格式的函数的详细介绍,我们还将为您解释php 去除html的相关知识,同时,我们还将为您提供关于AsyncResult 类的使用 转载粘贴过来的、ckeditor 直接粘贴图片实现、CKEditor从word直接复制内容的配置、ckeditor从word粘贴图片的实用信息。

本文目录一览:

PHP去掉从word直接粘贴过来的没有用格式的函数(php 去除html)

PHP去掉从word直接粘贴过来的没有用格式的函数(php 去除html)

一般处理的方式有二种:1.通过编辑器的JS直接去除。2.提交到后台后,直接用程序去掉无效标签。下面我就分享一个通过PHP的处理方式,成功率可能不是100%。这程序也是在PHP官网上看到的,就顺便粘贴过来了。
<div><adata="93041"id="copybut93041" onclick="doCopy('code93041')"> 代码如下:

AsyncResult 类的使用 转载粘贴过来的

AsyncResult 类的使用 转载粘贴过来的

AsyncResult 类的使用

2015 年 04 月 28 日 21:38:44 zbxzc 阅读数:4852 标签: asynchronous 更多
个人分类: c#
 
版权声明: https://blog.csdn.net/u014568921/article/details/45342637
AsyncResult 类封装异步委托上的异步操作的结果,与异步委托一起使用。从该委托的 BeginInvoke 方法返回的 IAsyncResult 可以强制转换为 AsyncResult。AsyncResult 具有 AsyncDelegate 属性,该属性保存在其上调用异步调用的委托对象。

AsyncResult 类的属性

AsyncDelegate 获取在其上调用异步调用的委托对象。
Public property AsyncState 获取作为 BeginInvoke 方法调用的最后一个参数而提供的对象。
Public property AsyncWaitHandle 获取封装 Win32 同步句柄并允许实现各种同步方案的 WaitHandle。
Public property CompletedSynchronously 获取一个值,该值指示 BeginInvoke 调用是否同步完成。
Public property EndInvokeCalled 获取或设置一个值,该值指示是否已在当前 AsyncResult 上调用 EndInvoke。
Public property IsCompleted 获取一个值,该值指示服务器是否已完成该调用。

Public property NextSink 获取接收器链中的下一个消息接收器。

 

下面的代码示例说明如何使用 AsyncResult 类检索异步委托上的异步操作的结果。

 

  1.  
    using System;
  2.  
    using System.Threading;
  3.  
    using System.Runtime.Remoting;
  4.  
    using System.Runtime.Remoting.Contexts;
  5.  
    using System.Runtime.Remoting.Messaging;
  6.  
     
  7.  
    // Context-bound type with the Synchronization context attribute.
  8.  
    [ Synchronization()]
  9.  
    public class SampleSyncronized : ContextBoundObject {
  10.  
     
  11.  
    // A method that does some work, and returns the square of the given number.
  12.  
    public int Square(int i) {
  13.  
     
  14.  
    Console.Write( "The hash of the thread executing ");
  15.  
    Console.WriteLine( "SampleSyncronized.Square is: {0}",
  16.  
    Thread.CurrentThread.GetHashCode());
  17.  
    return i*i;
  18.  
    }
  19.  
    }
  20.  
     
  21.  
    // The async delegate used to call a method with this signature asynchronously.
  22.  
    public delegate int SampSyncSqrDelegate(int i);
  23.  
     
  24.  
    public class AsyncResultSample {
  25.  
     
  26.  
    // Asynchronous Callback method.
  27.  
    public static void MyCallback(IAsyncResult ar) {
  28.  
     
  29.  
    // Obtains the last parameter of the delegate call.
  30.  
    int value = Convert.ToInt32(ar.AsyncState);
  31.  
     
  32.  
    // Obtains return value from the delegate call using EndInvoke.
  33.  
    AsyncResult aResult = (AsyncResult)ar;
  34.  
    SampSyncSqrDelegate temp = (SampSyncSqrDelegate)aResult.AsyncDelegate;
  35.  
    int result = temp.EndInvoke(ar);
  36.  
     
  37.  
    Console.Write( "Simple.SomeMethod (AsyncCallback): Result of ");
  38.  
    Console.WriteLine( "{0} in SampleSynchronized.Square is {1} ", value, result);
  39.  
    }
  40.  
     
  41.  
    public static void Main() {
  42.  
     
  43.  
    int result;
  44.  
    int param;
  45.  
     
  46.  
    // Creates an instance of a context-bound type SampleSynchronized.
  47.  
    SampleSyncronized sampSyncObj = new SampleSyncronized();
  48.  
     
  49.  
    // Checks whether the object is a proxy, since it is context-bound.
  50.  
    if (RemotingServices.IsTransparentProxy(sampSyncObj))
  51.  
    Console.WriteLine( "sampSyncObj is a proxy.");
  52.  
    else
  53.  
    Console.WriteLine( "sampSyncObj is NOT a proxy.");
  54.  
     
  55.  
    param = 10;
  56.  
     
  57.  
    Console.WriteLine( "");
  58.  
    Console.WriteLine( "Making a synchronous call on the context-bound object:");
  59.  
     
  60.  
    result = sampSyncObj.Square(param);
  61.  
    Console.Write( "The result of calling sampSyncObj.Square with ");
  62.  
    Console.WriteLine( "{0} is {1}.", param, result);
  63.  
    Console.WriteLine( "");
  64.  
     
  65.  
    SampSyncSqrDelegate sampleDelegate = new SampSyncSqrDelegate(sampSyncObj.Square);
  66.  
    param = 8;
  67.  
     
  68.  
    Console.WriteLine( "Making a single asynchronous call on the context-bound object:");
  69.  
     
  70.  
    IAsyncResult ar1 = sampleDelegate.BeginInvoke( param,
  71.  
    new AsyncCallback(AsyncResultSample.MyCallback),
  72.  
    param);
  73.  
     
  74.  
    Console.WriteLine( "Waiting for the asynchronous call to complete...");
  75.  
    WaitHandle wh = ar1.AsyncWaitHandle;
  76.  
    wh.WaitOne();
  77.  
     
  78.  
    Console.WriteLine( "");
  79.  
    Console.WriteLine( "Waiting for the AsyncCallback to complete...");
  80.  
    Thread.Sleep( 1000);
  81.  
    }
  82.  
    }

ckeditor 直接粘贴图片实现

ckeditor 直接粘贴图片实现

利用 ckeditor 作为网页编辑器的时候,如何让人家从 word 里面直接把所有的内容(包括图片)粘贴就可以直接显示,而不需要一张张图片重新上传然后才插入。

另外,ckeditor 和 fckeditor 感觉怎么差别那么大,配置还是一样的吗

CKEditor从word直接复制内容的配置

CKEditor从word直接复制内容的配置

CKEditor(github页面)是最流行的一款网页富文档编辑器(官方网址),包括oschina博客编辑器也是CKEditor,CKEditor4也支持整合vue,react,angular等前端框架,参考这,如果要支持更现代的语法,如ES6等,需要使用CKEditor5。

CKEditor很多功能都使用第三方插件,包括本文所讲的word复制粘贴功能的插件pastefromword,其完整的插件搜索页面。

插件pastefromword,除了管理基本的复制word格式等,如果要需要支持图片复制和上传,那必须要使用CKEditor文件上传功能,CKEditor默认下载包是不支持文件上传功能的,目前CKEditor要支持文件上传有四方案:

  1. 使用CKFinder插件;
  2. 使用KCFinder插件,
  3. 使用easy-image插件,
  4. 使用自己开发的文件上传接口

下面分别简述各种方案的基本情况

使用CKFinder

文件上传工具插件CKFinder,是它是一款收费软件,没有license key时,会添加图片水印。

使用KCFinder

CKFInder有一款开源的替代产品:KCFinder(网站)(CK和KC两字母调换了一下),但是这款软件从2016年后就没有再更新过,而且其官方网站  似乎也打不开了 :(,有比较多bug没有再修复,如pastefromword使用的文件上传功能,需要返回的是json格式,但旧版本已经不支持了。可以的话还是要使用CKFinder,KCFinder与CKFinder的基本使用方法是一样的,参考文档CKFinder文档 。

使用Easy-image

CKEditor官方推出的云上传工具,插件名称easy-image,文件上传到它提供的云服务空间(29美金/月)。

使用自定义上传API

自定义上传API功能是基于插件filebrowser提供的基本能力,以及文件管理器File Browser API实现的(CKFinder与KCFinder都是这种方式封装好的文件管理器)。

通过以下配置指定上传程序API路径

config.filebrowserImageUploadUrl=''上传文件api路径'';

下面主要讨论使用自定义上传API的实现方式。

自定义文件上传接口,Uploading Dropped or Pasted Files https://ckeditor.com/docs/ckeditor4/latest/guide/dev_file_upload.html

要支持从word复制并上传内容,还需要安装插件pastefromword(插件下载地址),filetools(插件下载地址)。

  • 文件上传说明 https://ckeditor.com/docs/ckeditor4/latest/examples/fileupload.html
  • Pasting content from Microsoft Word https://ckeditor.com/docs/ckeditor4/latest/examples/pastefromword.html

 

ckeditor从word粘贴图片

ckeditor从word粘贴图片

自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了。一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器)中时,编辑器都无法自动上传图片。需要用户手动一张张上传Word图片。如果只有一张图片还能够接受,如果图片数量比较多,这种操作就显得非常的麻烦。

1
、只粘贴图片并上传到服务器


config.extraPlugins = ''uploadimage'';

//config.uploadUrl = ''上传路径'';

config.imageUploadUrl= ''上传路径'';

请求

文件上传的默认请求是一个文件,作为具有“upload”字段的表单数据。

 

响应:文件已成功上传

当文件成功上传时的JSON响应:

uploaded- 设置为1。

fileName - 上传文件的名称。

url - 上传文件的URL。

响应:文件无法上传

uploaded- 设置为0。

error.message - 要显示给用户的错误消息。

using System;

using System.Web;

using System.IO;

 

namespace WordPasterCK4

{

    publicpartialclassupload : System.Web.UI.Page

     {

         protectedvoid Page_Load(object sender, EventArgs e)

         {

              string fname = Request.Form["UserName"];

              int len = Request.ContentLength;

 

              if (Request.Files.Count > 0)

              {

                   DateTime timeNow = DateTime.Now;

                   string uploadPath = "/upload/" + timeNow.ToString("yyyyMM") + "/" + timeNow.ToString("dd") + "/";

 

                   string folder = Server.MapPath(uploadPath);

                   //自动创建目录

                   if (!Directory.Exists(folder)) Directory.CreateDirectory(folder);

                   HttpPostedFile file = Request.Files.Get(0);

 

                //原始文件名称,由控件自动生成。

                //md5.png,crc.png,uuid.png,sha1.png

                string nameOri = file.FileName;

                   string ext = Path.GetExtension(nameOri).ToLower();

 

                   //只支持图片上传

                   if (    ext == ".jpg"

                    ||  ext == ".jpeg"

                    ||  ext == ".png"

                       ||  ext == ".gif"

                       ||  ext == ".bmp")

                   {

                       string filePathSvr = Path.Combine(folder, nameOri);

 

                    //

                    if(!Directory.Exists(filePathSvr)) file.SaveAs(filePathSvr);

                       Response.Write("http://10.168.4.209:83" + uploadPath + nameOri);

                   }

              }

         }

     }

}

 

2、粘贴word里面的图片路径是fill://D 这种格式 我理解这种是非浏览器安全的 许多浏览器也不支持

目前项目是用了一种变通的方式:

先把word上传到后台 、poi解析、存储图片 、转换html、替换图片、放到富文本框里显示

(富文本显示有个坑:没找到直接给富文本赋值的方法 要先销毁 记录下

var WordPasterConfig = {

     "EncodeType"           "GB2312"

     "Company"                "荆门泽优软件有限公司"

     "Version"                "1,5,131,51655"

    "License2"""

     "Debug"              false//调试模式

     "LogFile"                "f:\\log.txt"//日志文件路径

     "PasteWordType"      ""//粘贴WORD的图片格式。JPG/PNG/GIF/BMP,推荐使用JPG格式,防止出现大图片。

     "PasteImageType"    ""//粘贴文件,剪帖板的图片格式,为空表示本地图片格式。JPG/PNG/GIF/BMP

     "PasteImgSrc"            ""//shape:优先使用源公式图片,img:使用word自动生成的图片

    "JpgQuality"         "100"   //JPG质量。0~100

     "QueueCount"             "5"//同时上传线程数

     "CryptoType"             "crc"//名称计算方式,md5,crc,sha1,uuid,其中uuid为随机名称

     "ThumbWidth"             "0"//缩略图宽度。0表示不使用缩略图

     "ThumbHeight"            "0"//缩略图高度。0表示不使用缩略图

     "FileFieldName"      "file"//自定义文件名称名称

    "ImageMatch"         ""//服务器返回数据匹配模式,正则表达式,提取括号中的地址

    "FormulaDraw"             "gdi"//公式图片绘制器,gdi,magick

    "AppPath"                 ""

     "Cookie"                 ""

    "Servers"             :[{"url":"www.ncmem.com"},{"url":"www.xproerui.com"}]//内部服务器地址(不下载此地址中的图片)

     "IcoError"            "http://www.ncmem.com/products/word-imagepaster/ckeditor353/WordPaster/error.png"

    "IcoUploader"         "http://www.ncmem.com/products/word-imagepaster/ckeditor353/WordPaster/upload.gif"

     "PostUrl"                "http://www.ncmem.com/products/word-imagepaster/fckeditor2461/asp.net/upload.aspx"

    //x86

     "ClsidParser"            "2404399F-F06B-477F-B407-B8A5385D2C5E"

     "CabPath"                "http://www.ncmem.com/download/WordPaster2/WordPaster.cab"

     //x64

     "ClsidParser64"      "7C3DBFA4-DDE6-438A-BEEA-74920D90764B"

     "CabPath64"          "http://www.ncmem.com/download/WordPaster2/WordPaster64.cab"

     //Firefox

     "XpiType"               "application/npWordPaster2"

     "XpiPath"                "http://www.ncmem.com/download/WordPaster2/WordPaster.xpi"

     //Chrome

     "CrxName"                "npWordPaster2"

     "CrxType"               "application/npWordPaster2"

     "CrxPath"                "http://www.ncmem.com/download/WordPaster2/WordPaster.crx"

    //Edge

    , edge: { protocol: "wordpaster", port: 9200, visible: false }

    "ExePath""http://www.ncmem.com/download/WordPaster2/WordPaster.exe"

    "mac": {path: "http://www.ncmem.com/download/WordPaster2/WordPaster.exe"}

};

 

3、官方刚发表新版本说已经添加功能:

 

ckeditor编辑器批量上传的效果

 

图片已经上传到服务器端

 

图片地址已经替换过来了

 

可以看得出来,效果和用户体验都非常好。用户借助于此功能编辑功能得到大幅度提升了。

 

http://blog.ncmem.com/wordpress/2019/08/07/ckeditor%E7%B2%98%E8%B4%B4%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87/

关于PHP去掉从word直接粘贴过来的没有用格式的函数php 去除html的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AsyncResult 类的使用 转载粘贴过来的、ckeditor 直接粘贴图片实现、CKEditor从word直接复制内容的配置、ckeditor从word粘贴图片等相关知识的信息别忘了在本站进行查找喔。

本文标签: