<?php
$subjects = [
'LF' => "aaaa\nbbbb",
'CRLF' => "aaaa\r\nbbbb",
'CR' => "aaaa\rbbbb",
'NUL' => "aaaa\x00bbbb",
'VT' => "aaaa\x0Bbbbb",
'FF' => "aaaa\x0Cbbbb",
'NEL' => "aaaa\x85bbbb",
'LS' => "aaaa\u{2028}bbbb",
'PS' => "aaaa\u{2029}bbbb"
];
$patterns = [
'DEFAULT' => ['~.~A', '~\N~A'],
'ANYCRLF' => ['~(*ANYCRLF).~A', '~(*ANYCRLF)\N~A'],
'CRLF' => ['~(*CRLF).~A', '~(*CRLF)\N~A'],
'CR' => ['~(*CR).~A', '~(*CR)\N~A'],
'LF' => ['~(*LF).~A', '~(*LF)\N~A'],
'ANY' => ['~(*ANY).~A', '~(*ANY)\N~A'],
'NUL' => ['~(*NUL).~A', '~(*NUL)\N~A'],
];
$format = ' | %7s | %10s | %3s | %3s | ' . PHP_EOL;
$sep = '-+---------+------------+-----+-----+-' . PHP_EOL;
echo ' | nl type | nl setting | dot | \N | ', PHP_EOL;
foreach($subjects as $nl => $subject) {
echo $sep;
foreach($patterns as $nlsetting => $pattern) {
if (false === $cntdot = preg_match_all($pattern[0].'u', $subject))
$cntdot = preg_match_all($pattern[0], $subject);
if (false === $cntN = preg_match_all($pattern[1].'u', $subject))
$cntN = preg_match_all($pattern[1], $subject);
printf($format, $nl, $nlsetting, $cntdot, $cntN);
}
}
echo $sep;
- Output for 8.1.23 - 8.1.33, 8.2.6 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
- | nl type | nl setting | dot | \N |
-+---------+------------+-----+-----+-
| LF | DEFAULT | 4 | 4 |
| LF | ANYCRLF | 4 | 4 |
| LF | CRLF | 9 | 9 |
| LF | CR | 9 | 9 |
| LF | LF | 4 | 4 |
| LF | ANY | 4 | 4 |
| LF | NUL | 9 | 9 |
-+---------+------------+-----+-----+-
| CRLF | DEFAULT | 5 | 5 |
| CRLF | ANYCRLF | 4 | 4 |
| CRLF | CRLF | 4 | 4 |
| CRLF | CR | 4 | 4 |
| CRLF | LF | 5 | 5 |
| CRLF | ANY | 4 | 4 |
| CRLF | NUL | 10 | 10 |
-+---------+------------+-----+-----+-
| CR | DEFAULT | 9 | 9 |
| CR | ANYCRLF | 4 | 4 |
| CR | CRLF | 9 | 9 |
| CR | CR | 4 | 4 |
| CR | LF | 9 | 9 |
| CR | ANY | 4 | 4 |
| CR | NUL | 9 | 9 |
-+---------+------------+-----+-----+-
| NUL | DEFAULT | 9 | 9 |
| NUL | ANYCRLF | 9 | 9 |
| NUL | CRLF | 9 | 9 |
| NUL | CR | 9 | 9 |
| NUL | LF | 9 | 9 |
| NUL | ANY | 9 | 9 |
| NUL | NUL | 4 | 4 |
-+---------+------------+-----+-----+-
| VT | DEFAULT | 9 | 9 |
| VT | ANYCRLF | 9 | 9 |
| VT | CRLF | 9 | 9 |
| VT | CR | 9 | 9 |
| VT | LF | 9 | 9 |
| VT | ANY | 4 | 4 |
| VT | NUL | 9 | 9 |
-+---------+------------+-----+-----+-
| FF | DEFAULT | 9 | 9 |
| FF | ANYCRLF | 9 | 9 |
| FF | CRLF | 9 | 9 |
| FF | CR | 9 | 9 |
| FF | LF | 9 | 9 |
| FF | ANY | 4 | 4 |
| FF | NUL | 9 | 9 |
-+---------+------------+-----+-----+-
| NEL | DEFAULT | 9 | 9 |
| NEL | ANYCRLF | 9 | 9 |
| NEL | CRLF | 9 | 9 |
| NEL | CR | 9 | 9 |
| NEL | LF | 9 | 9 |
| NEL | ANY | 4 | 4 |
| NEL | NUL | 9 | 9 |
-+---------+------------+-----+-----+-
| LS | DEFAULT | 9 | 9 |
| LS | ANYCRLF | 9 | 9 |
| LS | CRLF | 9 | 9 |
| LS | CR | 9 | 9 |
| LS | LF | 9 | 9 |
| LS | ANY | 4 | 4 |
| LS | NUL | 9 | 9 |
-+---------+------------+-----+-----+-
| PS | DEFAULT | 9 | 9 |
| PS | ANYCRLF | 9 | 9 |
| PS | CRLF | 9 | 9 |
| PS | CR | 9 | 9 |
| PS | LF | 9 | 9 |
| PS | ANY | 4 | 4 |
| PS | NUL | 9 | 9 |
-+---------+------------+-----+-----+-
preferences:
79.01 ms | 417 KiB | 5 Q