3v4l.org

run code in 300+ PHP versions simultaneously
<?php $unclean_name = 'File name %20 %20 %2C Décor \/. /. . z \... y \...... x ./ “This name” is & 462^^ not &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = that grrrreat -][09]()1234747) sdlfjfkleq flekqjelkjqlk fjlkqe fqf'; $seperator = '_'; $fallback_name = 'generated__' . date('Y-m-d_H-m_A'); $max_chars = '180'; $file_extension = '....ta()r.gz[]'; echo str_file($unclean_name, $seperator, $fallback_name, $max_chars, $file_extension); function str_file( $str, $sep = '_', $default = '', $trim = 180, $ext = '') { // file name filters used to clean and prepare a string function str_file_filter( $str, $sep = '_', $strict = false, $trim = 180) { $str = strip_tags(strtolower($str)); $str = preg_replace("/&#?[a-z0-9]{2,8};/i", '', $str); $str = str_replace("%20", ' ', $str); // $str = preg_replace("/\s+/", $sep, $str); $str = preg_replace("/\.+/", '.', $str); if ($strict) { $str = preg_replace("/([^\w\d\\" . $sep . ".])/", '', $str); } else { $str = preg_replace("/([^\w\d\\" . $sep . "\[\]\(\).])/", '', $str); } return substr($str, 0, $trim); } // get or set a default file name in case all chars are trimmed from $str then ensure there is an id at tail if (empty($str) && empty($default)) { $str = 'no_name__' . date('Y-m-d_H-m_A') . '__' . uniqid(); } elseif (empty($str)) { $str = $default; } // run $str and/or $ext through filters to clean up and remove special chars return str_file_filter($str, $sep) . str_file_filter('.' . $ext, '', true); } else { return str_file_filter($str, $sep); } }

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
7.0.20.0370.07320.25
7.0.10.0030.04720.15
7.0.00.0030.07720.05
5.6.170.0230.04320.47
5.6.160.0030.05320.50
5.6.150.0030.04018.19
5.6.140.0130.07018.14
5.6.130.0070.08018.14
5.6.120.0070.05721.13
5.6.110.0000.04321.12
5.6.100.0170.07721.00
5.6.90.0100.03721.01
5.6.80.0070.06020.39
5.5.310.0270.07320.14
5.5.300.0100.03317.95
5.5.290.0100.07018.03
5.5.280.0170.07320.78
5.5.270.0030.07720.88
5.5.260.0070.08020.98
5.5.250.0270.07020.48
5.5.240.0300.05320.20

preferences:
142.42 ms | 1394 KiB | 7 Q