3v4l.org

run code in 300+ PHP versions simultaneously
<?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 git.master, git.master_jit, rfc.property-hooks
| 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 | -+---------+------------+-----+-----+-

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
53.78 ms | 416 KiB | 5 Q