3v4l.org

run code in 300+ PHP versions simultaneously
<?php $contents = <<<EOL console.log('hello'); //# sourceMappingURL= EOL; $backtrack_limit = (int) ini_get('pcre.backtrack_limit'); // Actual limit seems to be this value divided by 2. $backtrack_limit = ($backtrack_limit / 2) - 1; $contents .= str_repeat('x', $backtrack_limit); // Add an empty space after the sourcemap, followed by other code. $contents .= <<<EOL // I appear after the sourcemap. var newcode = 123; EOL; $results = [ 'orig' => preg_replace('/\/\/(#|@)\s(sourceURL|sourceMappingURL)=\s*(\S*?)\s*$/m', '', $contents), 'proposed' => preg_replace('/\/\/(#|@)\s(sourceURL|sourceMappingURL)=\s*[^$\s]*\s*$/m', '', $contents), 'alt1' => preg_replace('/\/\/(#|@)\s(sourceURL|sourceMappingURL)=.*\s*$/m', '', $contents), 'alt2' => preg_replace('/\/\/(#|@)\s(sourceURL|sourceMappingURL)=\s*[^$\s]*/m', '', $contents), // Most efficient so far based off https://regex101.com - (https://stackoverflow.com/a/36629670). 'alt3' => preg_replace('~//[#@]\s(source(?:Mapping)?URL)=\s*(\S+)~', '', $contents), ]; foreach ($results as $key => $result) { echo "------------------------------------------\n"; echo "Results for '$key':\n"; var_dump($result); }
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.4, 8.3.6 - 8.3.27, 8.4.1 - 8.4.15, 8.5.0 - 8.5.1
------------------------------------------ Results for 'orig': NULL ------------------------------------------ Results for 'proposed': NULL ------------------------------------------ Results for 'alt1': string(41) "console.log('hello'); var newcode = 123;" ------------------------------------------ Results for 'alt2': string(74) "console.log('hello'); // I appear after the sourcemap. var newcode = 123;" ------------------------------------------ Results for 'alt3': string(74) "console.log('hello'); // I appear after the sourcemap. var newcode = 123;"
Output for 8.3.28
/bin/php-8.3.28: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.3.28) /bin/php-8.3.28: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.3.28) /bin/php-8.3.28: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.3.28) /bin/php-8.3.28: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.3.28)
Process exited with code 1.
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 ------------------------------------------ Results for 'orig': NULL ------------------------------------------ Results for 'proposed': NULL ------------------------------------------ Results for 'alt1': string(41) "console.log('hello'); var newcode = 123;" ------------------------------------------ Results for 'alt2': string(74) "console.log('hello'); // I appear after the sourcemap. var newcode = 123;" ------------------------------------------ Results for 'alt3': string(74) "console.log('hello'); // I appear after the sourcemap. var newcode = 123;"
Output for 5.3.29
Parse error: syntax error, unexpected '[' in /in/JagL4 on line 19
Process exited with code 255.

preferences:
198.65 ms | 411 KiB | 5 Q