1--TEST-- 2Test oniguruma stack limit 3--EXTENSIONS-- 4mbstring 5iconv 6--SKIPIF-- 7<?php 8if (!function_exists('mb_ereg_replace')) die('skip mb_ereg_replace not available'); 9if (version_compare(MB_ONIGURUMA_VERSION, '6.9.3') < 0) { 10 die('skip requires Oniguruma 6.9.3'); 11} 12?> 13--FILE-- 14<?php 15function mb_trim_regex( $string, $chars = "", $chars_array = array() ) 16{ 17 for( $x=0; $x<iconv_strlen( $chars ); $x++ ) $chars_array[] = preg_quote( iconv_substr( $chars, $x, 1 ) ); 18 $encoded_char_list = implode( "|", array_merge( array( "\s","\t","\n","\r", "\0", "\x0B" ), $chars_array ) ); 19 20 $string = mb_ereg_replace( "^($encoded_char_list)*", "", $string ); 21 $string = mb_ereg_replace( "($encoded_char_list)*$", "", $string ); 22 return $string; 23} 24 25ini_set('mbstring.regex_stack_limit', 10000); 26var_dump(mb_trim_regex(str_repeat(' ', 10000))); 27 28echo 'OK'; 29?> 30--EXPECTF-- 31Warning: mb_ereg_replace(): mbregex search failure in php_mbereg_replace_exec(): match-stack limit over in %s on line %d 32string(0) "" 33OK 34