3v4l.org

run code in 500+ PHP versions simultaneously
<?php $files=[ 'Non-Images Only'=>'filename 1 (https://example.com/test.exe)', 'Mixed-Type'=>'filename 1 (https://example.com/test.pdf), filename 2 (https://example.com/cool_image.jpg), filename 3 (https://example.com/other-file.docx), filename 4 (https://example.com/nice_image.png)', 'Images-Only'=>'filename 1 (https://example.com/another.png), filename 2 (https://example.com/cool_image.jpg))']; foreach ($files as $type => $batch) { echo "Batch: ".$batch.PHP_EOL; echo "Expecting: ".$type.PHP_EOL; $images = preg_match('/\.(png|gif|jpe?g|bmp)/im', $batch); $nonImages = preg_match('/^(?!.*[.](png|gif|jpe?g|bmp))(?:.*$|,)/im', $batch); $result = ""; if ($images && $nonImages) { $result = "Mixed-Type"; } else { if ($images) { $result = "Images-Only"; } else { $result = "Non-Images Only"; } } echo "Result: ".$result.PHP_EOL; echo PHP_EOL; }
Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 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
Batch: filename 1 (https://example.com/test.exe) Expecting: Non-Images Only Result: Non-Images Only Batch: filename 1 (https://example.com/test.pdf), filename 2 (https://example.com/cool_image.jpg), filename 3 (https://example.com/other-file.docx), filename 4 (https://example.com/nice_image.png) Expecting: Mixed-Type Result: Mixed-Type Batch: filename 1 (https://example.com/another.png), filename 2 (https://example.com/cool_image.jpg)) Expecting: Images-Only Result: Images-Only

preferences:
117.24 ms | 2093 KiB | 4 Q