Zebra_Form icon indicating copy to clipboard operation
Zebra_Form copied to clipboard

PHP error: The /e modifier is deprecated, use preg_replace_callback instead

Open njwgh opened this issue 7 years ago • 2 comments

Getting a php error on the xssclean.php file at lines 285 and 286 "The /e modifier is deprecated, use preg_replace_callback instead "

285: $str = preg_replace('~&#x(0*[0-9a-f]{2,5})~ei', 'chr(hexdec("\1"))', $str);

suggest it is rewritten to: $str = preg_replace_callback('~&#x(0*[0-9a-f]{2,5})~ei', create_function ('$matches', 'return chr(hexdec($matches[1]));'), $str);

286: return preg_replace('~&#([0-9]{2,4})~e', 'chr(\1)', $str);

suggest it is rewritten to:

return preg_replace_callback('~&#([0-9]{2,4})~e', 'chr(\1)', create_function ('$matches', 'return chr($matches[1]);'), $str);

Can anyone confirm that this is correct?

njwgh avatar Apr 06 '17 08:04 njwgh

OK so it seems 'create_function' is deprecated as well.

Here's another attempt. I would love confirmation that it is correct. Thanks

$str = preg_replace_callback('~&#x(0*[0-9a-f]{2,5})~i', function ($m) { return chr(hexdec($m[1]));}, $str);

return preg_replace_callback('~&#([0-9]{2,4})~', function ($m) { return chr($m[1]);}, $str);

njwgh avatar Mar 29 '19 11:03 njwgh

Seems I'm a victim of 'auto replace' In the code above the section that has the strike-through should actually have a ~ after the first single quote and before the last single quote. No idea how to make it show correctly

njwgh avatar Mar 29 '19 11:03 njwgh