<?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;
preferences:
24.79 ms | 405 KiB | 5 Q