1--TEST-- 2preg_replace_callback() with callback that modifies subject string 3--SKIPIF-- 4<?php 5if (@preg_match('/./u', '') === false) { 6 die('skip no utf8 support in PCRE library'); 7} 8?> 9--FILE-- 10<?php 11 12function evil($x) { 13 global $txt; 14 $txt[3] = "\xFF"; 15 var_dump($x); 16 return $x[0]; 17} 18 19$txt = "ola123"; 20var_dump(preg_replace_callback('#.#u', 'evil', $txt)); 21var_dump($txt); 22var_dump(preg_last_error() == PREG_NO_ERROR); 23 24var_dump(preg_replace_callback('#.#u', 'evil', $txt)); 25var_dump(preg_last_error() == PREG_BAD_UTF8_ERROR); 26 27echo "Done!\n"; 28?> 29--EXPECT-- 30array(1) { 31 [0]=> 32 string(1) "o" 33} 34array(1) { 35 [0]=> 36 string(1) "l" 37} 38array(1) { 39 [0]=> 40 string(1) "a" 41} 42array(1) { 43 [0]=> 44 string(1) "1" 45} 46array(1) { 47 [0]=> 48 string(1) "2" 49} 50array(1) { 51 [0]=> 52 string(1) "3" 53} 54string(6) "ola123" 55string(6) "ola�23" 56bool(true) 57NULL 58bool(true) 59Done! 60