Удалить специальный символ из Summernote при экспорте с помощью 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?

0

Решение

Вам потребуется использовать некоторые базовые функции 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>,

1

Другие решения

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

По вопросам рекламы [email protected]