Skip to content

Commit 43c1677

Browse files
committed
Updated Rector to commit 0b9455799ca12c189bc8383a2c470b18210a99fe
rectorphp/rector-src@0b94557 [Php72] Handle crash on hex backreference on PregReplaceEModifierRector (#7896)
1 parent e4f7cd8 commit 43c1677

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

src/Application/VersionResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ final class VersionResolver
1919
* @api
2020
* @var string
2121
*/
22-
public const PACKAGE_VERSION = '86d83cc335c7ef5959b5462a4ec7093690fd3f65';
22+
public const PACKAGE_VERSION = '0b9455799ca12c189bc8383a2c470b18210a99fe';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2026-02-14 13:46:43';
27+
public const RELEASE_DATE = '2026-02-15 09:44:03';
2828
/**
2929
* @var int
3030
*/

src/PhpParser/Parser/InlineCodeParser.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ final class InlineCodeParser
6262
* @var string
6363
*/
6464
private const BACKREFERENCE_NO_DOUBLE_QUOTE_START_REGEX = '#(?<!")(?<backreference>\$\d+)#';
65+
/**
66+
* @see https://regex101.com/r/13mVVg/1
67+
* @var string
68+
*/
69+
private const HEX_BACKREFERENCE_REGEX = '#0x(?<backreference>\$\d+)#';
6570
public function __construct(BetterStandardPrinter $betterStandardPrinter, \Rector\PhpParser\Parser\SimplePhpParser $simplePhpParser, ValueResolver $valueResolver)
6671
{
6772
$this->betterStandardPrinter = $betterStandardPrinter;
@@ -88,6 +93,12 @@ public function parseString(string $fileContent): array
8893
public function stringify(Expr $expr): string
8994
{
9095
if ($expr instanceof String_) {
96+
if (strpos($expr->value, "'") === \false && strpos($expr->value, '"') === \false && StringUtils::isMatch($expr->value, self::HEX_BACKREFERENCE_REGEX)) {
97+
return Strings::replace($expr->value, self::HEX_BACKREFERENCE_REGEX, static function (array $match): string {
98+
$number = ltrim((string) $match['backreference'], '\$');
99+
return 'hexdec($matches[' . $number . '])';
100+
});
101+
}
91102
if (!StringUtils::isMatch($expr->value, self::BACKREFERENCE_NO_QUOTE_REGEX)) {
92103
return Strings::replace($expr->value, self::BACKREFERENCE_NO_DOUBLE_QUOTE_START_REGEX, static fn(array $match): string => '"' . $match['backreference'] . '"');
93104
}

0 commit comments

Comments
 (0)