使用PHPExcel导出时,从Summernote中删除特殊字符


Remove special character from Summernote when exporting with PHPExcel

我使用PHPExcel将数据从数据库导出到excel文件。但我的数据包含一些特殊字符,这些字符是由编辑器插件(Summernote)自动生成的。例如:

<p class="Default"><span style="font-weight: bold;"><span style="mso-bidi-font-size:10.0pt;color:windowtext">+ Tra cứu thông tin; </span></span></p>

(主要内容只是:+Tra cứu thông tin

有人可以帮我删除这些字符,但在导出到excel文件时保持原始格式吗?

您需要使用一些基本的PHP函数将html实体转换为其字符,然后剥离html标记:

$string = '<p class="Default"><span style="font-weight: bold;"><span style="mso-bidi-font-size:10.0pt;color:windowtext">+ Tra cứu thông tin; </span></span></p>';
$string = strip_tags(html_entity_decode($string));
var_dump($string);

它将为您提供原始文本内容

string(24) "+ Tra cứu thông tin; "

PHPExcel还提供了一个Helper函数,该函数将转换一些html标记,以便通过将其转换为Rich Text对象来保留格式

$string = '<p class="Default"><span style="font-weight: bold;"><span style="mso-bidi-font-size:10.0pt;color:windowtext">+ Tra cứu thông tin; </span></span></p>';
$string = html_entity_decode($string);
$wizard = new PHPExcel_Helper_HTML;
$richText = $wizard->toRichTextObject($string);

然而,如果你想保留所有这些原始格式,你需要自己解决,因为PHPExcel的助手不读取CSS或<span><div>标签中的内联样式,只读取基本的标记样式标签,如<strong><i><font>

Mark, genius. I made a helper on laravel for this
    function str_fix($string){
        $end = '...';
        if (mb_strwidth($string, 'UTF-8') <= 150) {
            $new_str = strip_tags(html_entity_decode($string));
            return $new_str;
        }
$new_str = strip_tags(html_entity_decode($string));
$string = rtrim(mb_strimwidth($new_str, 0, 150, '', 'UTF-8') ).$end;
        return $string;
    }