3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array = explode(PHP_EOL, '123 – 45 – 6789 111000025 021000021 031902766 067014822 122000247 123456789 987654321 012345678901 876543210987 112233445566 123456789 123-456789 123456789 123 45 6789 123-45-6789 123-45-6789 123 – 45 – 6789 123.45.6789 123_45_6789 123 456 789 123-456-789 123 – 456 – 789 123.456.789 123_456_789 1234 56 789 1234-56-789 1234 – 56 – 789 1234.56.789 1234_56_789 12 345 6789 12-345-6789 12 – 345 – 6789 12.345.6789 12_345_6789'); var_export( preg_replace_callback( '/(?!<[-–_\s.\d]) (?= (?: (?:[-–_\s.]*\d){8,9} | (?:[-–_\s.]*\d){12} ) (?![-–_\s.\d]) ) [-–_ .\d]+ (?=(?:[-–_ .\d]*\d){4})/x', fn($m) => str_repeat('*', strlen($m[0])), $array ) );
Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
array ( 0 => '***************6789', 1 => '*****0025', 2 => '*****0021', 3 => '*****2766', 4 => '*****4822', 5 => '*****0247', 6 => '*****6789', 7 => '*****4321', 8 => '********8901', 9 => '********0987', 10 => '********5566', 11 => '*****6789', 12 => '******6789', 13 => '*****6789', 14 => '*******6789', 15 => '*******6789', 16 => '*******6789', 17 => '***************6789', 18 => '*******6789', 19 => '*******6789', 20 => '******6 789', 21 => '******6-789', 22 => '**********6 – 789', 23 => '******6.789', 24 => '******6_789', 25 => '******6 789', 26 => '******6-789', 27 => '**********6 – 789', 28 => '******6.789', 29 => '******6_789', 30 => '*******6789', 31 => '*******6789', 32 => '***************6789', 33 => '*******6789', 34 => '*******6789', )

preferences:
76.69 ms | 1234 KiB | 4 Q