Я использую 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;
}