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