3v4l.org

run code in 300+ PHP versions simultaneously
<?php $message = "This is a string using the terms? Wait here's one\n abukuma kai\nabukuma-kai\nabukuma\nabukuma\nkai abukuma abukuma kai"; $search = array( 'abukuma kai', 'abukuma' ); $replacements = array( // here all replaces | each in a new line - watch the syntax // all html possible, but no single quotation mark! '<a href="http://kancolle.wikia.com/wiki/Abukuma#Upgrade" class="screenshot" rel="ship/Abukuma_Kai.png" style="color:#0073e6; font-weight:bold; border-bottom: 1px #0073e6 dashed;"><p id="yosup">Abukuma Kai</p></a>', '<a href="http://kancolle.wikia.com/wiki/Abukuma#Basic" class="screenshot" rel="ship/Abukuma.png" style="color:#0073e6; font-weight:bold; border-bottom: 1px #0073e6 dashed;">Abukuma</a>' ); function replaceStrings($haystack, $needle, $replacement, $offset = 0) { if (count($needle) != count($replacement)) { throw new \InvalidArgumentException('Needle length must match replacement length'); } $regexpDelimiter = '/'; $wordDelimiter = '[-\s_]'; if (is_array($needle)) { $massagedNeedles = array_map( function($s) use($regexpDelimiter, $wordDelimiter) { $s = preg_quote($s, $regexpDelimiter); $s = preg_replace('/' . $wordDelimiter . '/', $wordDelimiter, $s); return $s; }, $needle ); $regexp = implode('|', $massagedNeedes); } else { $regexp = preg_replace('/' . $wordDelimiter . '/', preg_quote($needle, '/')); } $regexp = sprintf('/%s/i', $regexp); $strpos = preg_match($regexp, $haystack, $matches, 0, $offset); if ($strpos === false) { return $haystack; } var_dump($matches); exit; return replaceStrings($haystack, $needle, $replacement, $offset); } replaceStrings($message, $search, $replace);
Output for 8.0.10 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
Warning: Undefined variable $replace in /in/PkLWU on line 56 Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in /in/PkLWU:18 Stack trace: #0 /in/PkLWU(56): replaceStrings('This is a strin...', Array, NULL) #1 {main} thrown in /in/PkLWU on line 18
Process exited with code 255.
Output for 8.0.0 - 8.0.9
Warning: Undefined variable $replace in /in/PkLWU on line 56 Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable|array, null given in /in/PkLWU:18 Stack trace: #0 /in/PkLWU(56): replaceStrings('This is a strin...', Array, NULL) #1 {main} thrown in /in/PkLWU on line 18
Process exited with code 255.
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.31, 7.4.0 - 7.4.33
Notice: Undefined variable: replace in /in/PkLWU on line 56 Warning: count(): Parameter must be an array or an object that implements Countable in /in/PkLWU on line 18 Fatal error: Uncaught InvalidArgumentException: Needle length must match replacement length in /in/PkLWU:19 Stack trace: #0 /in/PkLWU(56): replaceStrings('This is a strin...', Array, NULL) #1 {main} thrown in /in/PkLWU on line 19
Process exited with code 255.
Output for 7.3.32 - 7.3.33
Warning: count(): Parameter must be an array or an object that implements Countable in /in/PkLWU on line 18 Fatal error: Uncaught InvalidArgumentException: Needle length must match replacement length in /in/PkLWU:19 Stack trace: #0 /in/PkLWU(56): replaceStrings('This is a strin...', Array, NULL) #1 {main} thrown in /in/PkLWU on line 19
Process exited with code 255.
Output for 7.0.0 - 7.0.33, 7.1.0 - 7.1.33
Notice: Undefined variable: replace in /in/PkLWU on line 56 Fatal error: Uncaught InvalidArgumentException: Needle length must match replacement length in /in/PkLWU:19 Stack trace: #0 /in/PkLWU(56): replaceStrings('This is a strin...', Array, NULL) #1 {main} thrown in /in/PkLWU on line 19
Process exited with code 255.
Output for 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40
Notice: Undefined variable: replace in /in/PkLWU on line 56 Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Needle length must match replacement length' in /in/PkLWU:19 Stack trace: #0 /in/PkLWU(56): replaceStrings('This is a strin...', Array, NULL) #1 {main} thrown in /in/PkLWU on line 19
Process exited with code 255.
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/PkLWU on line 19 Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /in/PkLWU on line 27
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/PkLWU on line 19 Parse error: parse error, unexpected T_FUNCTION, expecting ')' in /in/PkLWU on line 27
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_NEW in /in/PkLWU on line 19
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.3.11, 4.4.0 - 4.4.1
Parse error: parse error, unexpected T_NEW in /in/PkLWU on line 19
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error in /in/PkLWU on line 19
Process exited with code 255.

preferences:
320.23 ms | 401 KiB | 460 Q