3v4l.org

run code in 300+ PHP versions simultaneously
<?php $htmlData = '<h1><span> test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span> <span> test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span> <span> test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span> <span> test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span> </h1> '; echo $htmlData = preg_replace_callback('/<li(.*?)>(.*?)<\/li>(.*?)/s', 'self::replaceRule19Matches', $htmlData); function replaceRule19Matches($matches) { $outString = ''; $matchList = []; preg_match_all('/<span[^>]*>(.*?)<\/span>/s', $matches[0], $matchList); foreach ($matchList[0] as $match) { $htmlToMatch = htmlentities($match); if ((substr_count($htmlToMatch, "&amp;nbsp;") == 5) && (str_word_count($htmlToMatch) == 5)) { $outString = str_replace($match, '<b style="width:14px; display: inline-block;">&nbsp;</b>', $matches[0]); } else if (substr_count($htmlToMatch, "&amp;nbsp;") == 20) { $outString = str_replace($match, '<b style="width:35px; display: inline-block;">&nbsp;</b>', $matches[0]); } } return $outString == '' ? $matches[0] : $outString; }
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.4, 8.3.6
Fatal error: Uncaught TypeError: preg_replace_callback(): Argument #2 ($callback) must be a valid callback, cannot access "self" when no class scope is active in /in/NP3f8:9 Stack trace: #0 /in/NP3f8(9): preg_replace_callback('/<li(.*?)>(.*?)...', 'self::replaceRu...', '<h1><span> test...') #1 {main} thrown in /in/NP3f8 on line 9
Process exited with code 255.
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 Fatal error: Uncaught TypeError: preg_replace_callback(): Argument #2 ($callback) must be a valid callback, cannot access "self" when no class scope is active in /in/NP3f8:9 Stack trace: #0 /in/NP3f8(9): preg_replace_callback('/<li(.*?)>(.*?)...', 'self::replaceRu...', '<h1><span> test...') #1 {main} thrown in /in/NP3f8 on line 9
Process exited with code 255.
Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.38, 7.0.0 - 7.0.33, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
Warning: preg_replace_callback(): Requires argument 2, 'self::replaceRule19Matches', to be a valid callback in /in/NP3f8 on line 9 <h1><span> test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span> <span> test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span> <span> test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span> <span> test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span> </h1>

preferences:
256.66 ms | 404 KiB | 294 Q