3v4l.org

run code in 300+ PHP versions simultaneously
<?php $score = 64; $firstName = 'Jack'; $lastName = 'Saliv'; $age = 21; $expected = 'FFFEFF404A00610063006B00530061006C00690076FFFEFF15'; $expectedCorrected = 'FFFEFF404A00610063006B00530061006C0069007600FFFEFF15'; // Convert to UTF-16LE and get hex, https://stackoverflow.com/a/16080439/231316 $nameAsUtf16LE = unpack('H*', mb_convert_encoding($firstName.$lastName, 'UTF-16LE', 'UTF-8')); // UTF-16LE BOM $utf16LeBom = 'FFFE'; // Convert to hex strings $scoreAsHex = dechex($score); $ageAsHex = dechex($age); $finalString = sprintf( '%1$s%2$s%3$s', $utf16LeBom.$scoreAsHex, strtoupper($nameAsUtf16LE[1]), // This is 1-based, not 0-based $utf16LeBom.$ageAsHex, ); $numberPadding = 'FF'; $finalStringWithNumbersPadded = sprintf( '%1$s%2$s%3$s', $utf16LeBom.$numberPadding.$scoreAsHex, strtoupper($nameAsUtf16LE[1]), // This is 1-based, not 0-based $utf16LeBom.$numberPadding.$ageAsHex, ); echo 'Calculated : '.$finalString; echo PHP_EOL; echo 'Padded : '.$finalStringWithNumbersPadded; echo PHP_EOL; echo 'Expected : '.$expected; echo PHP_EOL; echo 'Expected Corrected : '.$expectedCorrected; assert($finalStringWithNumbersPadded === $expectedCorrected);
Output for 7.3.0 - 7.3.25, 8.1.23 - 8.1.33, 8.2.6 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
Calculated : FFFE404A00610063006B00530061006C0069007600FFFE15 Padded : FFFEFF404A00610063006B00530061006C0069007600FFFEFF15 Expected : FFFEFF404A00610063006B00530061006C00690076FFFEFF15 Expected Corrected : FFFEFF404A00610063006B00530061006C0069007600FFFEFF15
Output for 5.6.40, 7.0.0, 7.1.26, 7.2.34
Parse error: syntax error, unexpected ')' in /in/XTdjA on line 26
Process exited with code 255.

preferences:
86.84 ms | 407 KiB | 5 Q