3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?php function getUTF8CharCode($c) { $h = ord($c{0}); if ($h <= 0x7F) { return $h; } else if ($h < 0xC2) { return false; } else if ($h <= 0xDF) { return ($h & 0x1F) << 6 | (ord($c{1}) & 0x3F); } else if ($h <= 0xEF) { return ($h & 0x0F) << 12 | (ord($c{1}) & 0x3F) << 6 | (ord($c{2}) & 0x3F); } else if ($h <= 0xF4) { return ($h & 0x0F) << 18 | (ord($c{1}) & 0x3F) << 12 | (ord($c{2}) & 0x3F) << 6 | (ord($c{3}) & 0x3F); } else { return false; } } function escapeCSSCharacter($c) { return "\\" . base_convert(getUTF8CharCode($c), 10, 16) . " "; } function escapeCSSRule($data, array $immuneChars = array()) { $result = ""; for ($i = 0; $i < mb_strlen($data); $i++) { $currChar = mb_substr($data, $i, 1); var_dump(getUTF8CharCode($currChar), preg_match("/^\w$/", $currChar)); if (getUTF8CharCode($currChar) < 256 && !preg_match("/^\w$/", $currChar) && !in_array($currChar, $immuneChars)) { $result .= escapeCSSCharacter($currChar); } else { $result .= $currChar; } } return $result; } echo escapeCSSRule("#BADA55;}*{display:none;}/*", array("#"));
Output for 5.1.0 - 7.2.0
int(35) int(0) int(66) int(1) int(65) int(1) int(68) int(1) int(65) int(1) int(53) int(1) int(53) int(1) int(59) int(0) int(125) int(0) int(42) int(0) int(123) int(0) int(100) int(1) int(105) int(1) int(115) int(1) int(112) int(1) int(108) int(1) int(97) int(1) int(121) int(1) int(58) int(0) int(110) int(1) int(111) int(1) int(110) int(1) int(101) int(1) int(59) int(0) int(125) int(0) int(47) int(0) int(42) int(0) #BADA55\3b \7d \2a \7b display\3a none\3b \7d \2f \2a
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_ARRAY, expecting '&' or T_VARIABLE in /in/atlro on line 27
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_ARRAY, expecting '&' or T_VARIABLE or T_CONST in /in/atlro on line 27
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.4.1
Parse error: parse error, unexpected T_ARRAY, expecting '&' or T_VARIABLE or T_CONST in /in/atlro on line 27
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `'&'' or `T_VARIABLE' or `T_CONST' in /in/atlro on line 27
Process exited with code 255.