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

时间:2015-12-06 07:56:27

标签: php excel special-characters phpexcel summernote

我使用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>

(主要内容仅为: +Tracứuthôngthtin

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

2 个答案:

答案 0 :(得分:1)

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

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

将为您提供原始文本内容

$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还提供了一个Helper函数,它将转换一些html标记,以便通过将格式转换为Rich Text对象来保留格式

<span>

但是,如果你想保留所有这些原始格式,你需要自己解决这个问题,因为PHPExcel的助手不会在<div><strong>中读取CSS或读取内联样式标签,只是<i><font>或{{1}}等基本标记样式标记。

答案 1 :(得分:0)

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;
    }