3v4l.org

run code in 300+ PHP versions simultaneously
<?php function getFilenameFromUrl($url) { $default = uniqid(); if (!is_string($url) || strpos($url, '/') === false) { return $default; } // Get last part of the url (after the last slash). $parts = explode('/', $url); $filename = array_pop($parts); // Replace special characters with underscores. $filename = preg_replace('/[^a-z0-9\_\-\.]/i', '_', $filename); // Replace multiple underscores with just one. $filename = preg_replace('/__+/i', '_', trim($filename, '_')); // Return the cleaned filename or, if it is empty, a unique id. return $filename ?: $default; } var_dump(getFilenameFromUrl('THIS IS NOT A URL')); var_dump(getFilenameFromUrl('https://example.com/this____or_that______.zip?dlid=asd____a_a_a__b__b__B')); var_dump(getFilenameFromUrl('https://www.some-domain.com/downloads/file.php?file=foobar')); var_dump(getFilenameFromUrl('https://www.some-domain.com/downloads/file.zip?slid=123')); var_dump(getFilenameFromUrl('https://www.some-domain.com/downloads/?file=foobar'));

preferences:
27.68 ms | 410 KiB | 5 Q