3v4l.org

run code in 300+ PHP versions simultaneously
<?php $result = preg_replace( '#\/_([a-z]+\/)\g#', '/$1$1', '/_ticket/_show/xxx' ); var_dump( $result ); exit; $found = null; $route = '/_ticket/'; foreach ( explode( '/', trim( $route, '/' ) ) as $part => $r ) { $uscore = strpos( $r, '_' ); $times = substr_count( $r, '_' ); if ( 1 != $times || 0 != $uscore ) { continue; } $found = $part; break; } if ( null !== $found ) { $parts = explode( '/', trim( $route, '/' ) ); $before = array_slice( $parts, 0, $found, true ); $after = array_slice( $parts, $found + 1, null, true ); $replacePart = ltrim( $parts[ $found ], '_' ); $before[] = $replacePart; $before[] = $replacePart; foreach ( $after as $part ) { $before[] = $part; } }
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
Warning: preg_replace(): Compilation failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 15 in /in/UfpuG on line 2 NULL
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.5, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.1, 7.3.12 - 7.3.33, 7.4.0 - 7.4.33
string(18) "/_ticket/_show/xxx"
Output for 4.4.9, 5.2.7 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.26, 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.0 - 7.2.33
Warning: preg_replace(): Compilation failed: a numbered reference must not be zero at offset 14 in /in/UfpuG on line 2 NULL
Output for 5.2.5 - 5.2.6
Warning: preg_replace(): Compilation failed: \g is not followed by a braced name or an optionally braced non-zero number at offset 14 in /in/UfpuG on line 2 NULL
Output for 5.2.4
Warning: preg_replace(): Compilation failed: \g is not followed by a braced name or an optionally braced non-zero number at offset 13 in /in/UfpuG on line 2 NULL
Output for 4.4.6 - 4.4.8, 5.2.2 - 5.2.3
Warning: preg_replace(): Compilation failed: \g is not followed by an (optionally braced) non-zero number at offset 13 in /in/UfpuG on line 2 NULL

preferences:
237.15 ms | 402 KiB | 357 Q