File manager - Edit - /var/www/payraty/helpdesk/app/Services/Mail/Parsing/PurifyEmailBody.php
Back
<?php namespace App\Services\Mail\Parsing; use HTMLPurifier; use HTMLPurifier_Config; class PurifyEmailBody { public const REPLY_ABOVE_ID = 'bedeskReplyAboveThisLine'; public function execute(string $htmlBody): string { $htmlBody = html_entity_decode($htmlBody); // remove reference if it got through $htmlBody = preg_replace( '/\|reference=[a-zA-Z0-9]{30}\|/', '', $htmlBody, ); // purify email body $htmlBody = $this->getPurifier()->purify($htmlBody); // replace all newlines with "br" tag $htmlBody = str_replace(["\r\n", "\r", "\n"], '<br>', $htmlBody); // remove all whitespace/newlines from start and end of email body $htmlBody = trim($htmlBody); $htmlBody = preg_replace('/(?:<br\s*\/?>\s*)+$/', '', $htmlBody); $htmlBody = preg_replace('/^(?:<br\s*\/?>\s*)+/', '', $htmlBody); // replace 3 or more br tags with 2 to avoid excessive white space return preg_replace('/(?:<br\s*\/?>\s*){3,}/', '<br><br>', $htmlBody); } protected function getPurifier(): HTMLPurifier { $config = HTMLPurifier_Config::createDefault(); $config->set('Core.Encoding', 'UTF-8'); $config->set('HTML.Doctype', 'HTML 4.01 Transitional'); $config->set('Cache.SerializerPath', storage_path('app/purifier')); $config->set( 'HTML.Allowed', 'b,strong,i,u,a[href],ul,ol,li,br,img[src|width|height],font[color]', ); $config->set('HTML.TargetBlank', true); $config->set('AutoFormat.Linkify', true); $config->set('AutoFormat.RemoveEmpty', true); $config->set('AutoFormat.RemoveEmpty.RemoveNbsp', true); return new HTMLPurifier($config); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.30 | Generation time: 0.14 |
proxy
|
phpinfo
|
Settings