3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(E_ALL); function buildPosArr( $s, $d ) { $pArr = []; $needle = ""; $endstr = 0; for( $i=0, $max=count( $d ); $i < $max-1; $i++) { $needle = $d[$i]; if( ($pos = stripos( $s, $needle ) ) !== false){ $pArr[$pos] = $needle; if ($needle == "plain") break; // done for ( $j = $pos, $max = ($pos + strlen($needle)); $j < $max; $j++) { $s[$j] = "\0"; } // end for }// end if }// end for return $pArr; } function assign2str(&$s,$k,$v){ $max = strlen($v); for($i = $k, $j=0; $j < $max; $j++,$i++) { $s[$i] = $v[$j]; } } $str = "THERAININSPAINSTAYSMAINLYINTHEPLAIN."; echo "Before: $str\n\n"; $d = ["The", "rain", "in", "Spain", "stays", "mainly", "in", "the", "plain"]; $arr = buildPosArr( $str, $d ); foreach ($arr as $key => $value) { switch($value) { case "The": $value = strtolower($value); break; case "rain": $value = ucfirst($value); break; case "in": $value = ucfirst($value); case "Spain": break; case "stays": $value = strtoupper($value); break; case "mainly": break; case "plain": $value = ucfirst($value); default: break; } assign2str( $str,$key,$value ); } echo " After: ",$str;
Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 7.2.5 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 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
Before: THERAININSPAINSTAYSMAINLYINTHEPLAIN. After: theRainInSpainSTAYSmainlyInthePlain.
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 Before: THERAININSPAINSTAYSMAINLYINTHEPLAIN. After: theRainInSpainSTAYSmainlyInthePlain.

preferences:
141.82 ms | 402 KiB | 202 Q