2038 UuidV7 fix

main
Robert 3 weeks ago
parent c3a97ec616
commit 38d2a0582b
  1. 4
      src/Framework/BbCodeParser.php
  2. 9
      src/Framework/Uuids/UuidV7.php

@ -100,7 +100,7 @@ final class BbCodeParser
'content' => '$1' 'content' => '$1'
], ],
'listitem' => [ 'listitem' => [
'pattern' => '/\[\*\](.*)/', 'pattern' => '/\[li\](.*?)\[\/li\]/s',
'replace' => '<li>$1</li>', 'replace' => '<li>$1</li>',
'content' => '$1' 'content' => '$1'
], ],
@ -163,7 +163,7 @@ final class BbCodeParser
} }
public function parse(string $source, $caseInsensitive = null): string { public function parse(string $source, $caseInsensitive = null): string {
$caseInsensitive = $caseInsensitive === self::CASE_INSENSITIVE ? true : false; $caseInsensitive = ($caseInsensitive === null) ?? true;
foreach ($this->parsers as $name => $parser) { foreach ($this->parsers as $name => $parser) {
$pattern = ($caseInsensitive) ? $parser['pattern'] . 'i' : $parser['pattern']; $pattern = ($caseInsensitive) ? $parser['pattern'] . 'i' : $parser['pattern'];

@ -8,6 +8,7 @@ declare(strict_types = 1);
* @license MIT * @license MIT
*/ */
namespace IOcornerstone\Framework\Uuids; namespace IOcornerstone\Framework\Uuids;
use DateTimeImmutable;
class UuidV7 class UuidV7
{ {
@ -18,8 +19,12 @@ class UuidV7
} }
public static function generateUuidV7(): string { public static function generateUuidV7(): string {
$timestamp = (int)(microtime(true) * 1000); // Real Unix milliseconds /**
$timeHex = str_pad(dechex((int)$timestamp), 12, '0', STR_PAD_LEFT); * $milliseconds = (int)(microtime(true) * 1000); // Real Unix milliseconds
*/
// The completely safe, object-oriented way (no 2038 issue ever)
$milliseconds = (int)((new DateTimeImmutable())->format('U.u') * 1000);
$timeHex = str_pad(dechex($milliseconds), 12, '0', STR_PAD_LEFT);
$randomHex = bin2hex(random_bytes(10)); $randomHex = bin2hex(random_bytes(10));

Loading…
Cancel
Save