Merge commit from fork

This commit is contained in:
oleibman
2026-04-04 21:30:27 -07:00
committed by GitHub
parent 93c94eb31d
commit e2927cfa71
3 changed files with 36 additions and 2 deletions
@@ -144,11 +144,16 @@ class Formatter extends BaseFormatter
['\$', self::QUOTE_REPLACEMENT],
StringHelper::convertToString($value, lessFloatPrecision: $lessFloatPrecision)
);
$temp = preg_replace(self::SYMBOL_AT, $value, $formatx) ?? $value;
if (is_callable($callBack)) {
$temp = $callBack($temp, $formatx);
}
/** @var string $temp */
return str_replace(
['"', self::QUOTE_REPLACEMENT],
['', '"'],
preg_replace(self::SYMBOL_AT, $value, $formatx) ?? $value
$temp
);
}
+1 -1
View File
@@ -2102,7 +2102,7 @@ class Html extends BaseWriter
}
// convert to PCDATA
$result = htmlspecialchars($value, Settings::htmlEntityFlags());
$result = htmlspecialchars($value, ENT_NOQUOTES);
// color span tag
if ($color !== null) {
@@ -0,0 +1,29 @@
<?php
declare(strict_types=1);
namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Html as HtmlWriter;
use PHPUnit\Framework\TestCase;
class AtSignFormatTest extends TestCase
{
public function testAtSignFormat(): void
{
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$payload = '<img src=x onerror=alert(document.domain)>';
$formatCode = '@ "items"';
$sheet->setCellValue('A1', $payload);
$sheet->getStyle('A1')
->getNumberFormat()
->setFormatCode($formatCode);
$writer = new HtmlWriter($spreadsheet);
$html = $writer->generateHTMLAll();
self::assertStringContainsString('<td class="column0 style1 s">&lt;img src=x onerror=alert(document.domain)&gt; items</td>', $html);
$spreadsheet->disconnectWorksheets();
}
}