1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
<?php
namespace PregMatchShapes;
use Composer\Pcre\Preg;
use Composer\Pcre\Regex;
use function PHPStan\Testing\assertType;
function (string $s): void {
Preg::replaceCallback(
$s,
function ($matches) {
assertType('array<int|string, string|null>', $matches);
return '';
},
$s
);
Regex::replaceCallback(
$s,
function ($matches) {
assertType('array<int|string, string|null>', $matches);
return '';
},
$s
);
};
function (string $s): void {
Preg::replaceCallback(
'|<p>(\s*)\w|',
function ($matches) {
assertType('array{string, string}', $matches);
return '';
},
$s
);
};
function (string $s): void {
Preg::replaceCallback(
'/(foo)?(bar)?(baz)?/',
function ($matches) {
assertType("array{string, 'foo'|null, 'bar'|null, 'baz'|null}", $matches);
return '';
},
$s,
-1,
$count,
PREG_UNMATCHED_AS_NULL
);
};
function (string $s): void {
Preg::replaceCallback(
'/(foo)?(bar)?(baz)?/',
function ($matches) {
assertType("array{array{string|null, int<-1, max>}, array{'foo'|null, int<-1, max>}, array{'bar'|null, int<-1, max>}, array{'baz'|null, int<-1, max>}}", $matches);
return '';
},
$s,
-1,
$count,
PREG_OFFSET_CAPTURE
);
};
function (string $s): void {
Preg::replaceCallback(
'/(foo)?(bar)?(baz)?/',
function ($matches) {
assertType("array{array{string|null, int<-1, max>}, array{'foo'|null, int<-1, max>}, array{'bar'|null, int<-1, max>}, array{'baz'|null, int<-1, max>}}", $matches);
return '';
},
$s,
-1,
$count,
PREG_OFFSET_CAPTURE|PREG_UNMATCHED_AS_NULL
);
};
function (string $s): void {
Preg::replaceCallbackStrictGroups(
'/(foo)?(bar)?(baz)?/',
function ($matches) {
assertType("array{string, 'foo', 'bar', 'baz'}", $matches);
return '';
},
$s,
-1,
$count
);
};
function (string $s): void {
Preg::replaceCallbackStrictGroups(
'/(foo)?(bar)?(baz)?/',
function ($matches) {
assertType("array{array{string, int<-1, max>}, array{'foo', int<-1, max>}, array{'bar', int<-1, max>}, array{'baz', int<-1, max>}}", $matches);
return '';
},
$s,
-1,
$count,
PREG_OFFSET_CAPTURE
);
};
|