1--TEST-- 2Test chunk_split() function : usage variations - different integer values for 'chunklen' with heredoc string as 'str'(Bug#42796) 3--SKIPIF-- 4<?php 5if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); 6?> 7--FILE-- 8<?php 9/* Prototype : string chunk_split(string $str [, int $chunklen [, string $ending]]) 10 * Description: Returns split line 11 * Source code: ext/standard/string.c 12 * Alias to functions: 13*/ 14 15/* 16* passing different integer values for 'chunklen' and heredoc string for 'str' to chunk_split() 17*/ 18 19echo "*** Testing chunk_split() : different 'chunklen' with heredoc 'str' ***\n"; 20 21 22// Initializing required variables 23//heredoc string as str 24$heredoc_str = <<<EOT 25This's heredoc string with \t and \n white space char. 26It has _speci@l ch@r$ 2222 !!!Now \k as escape char to test 27chunk_split() 28EOT; 29 30$ending = ':::'; 31 32// different values for 'chunklen' 33$values = array ( 34 0, 35 1, 36 -123, //negative integer 37 0234, //octal number 38 0x1A, //hexadecimal number 39 PHP_INT_MAX, // max positive integer number 40 PHP_INT_MAX * 3, // integer overflow 41 -PHP_INT_MAX - 1, // min negative integer 42 43); 44 45 46// loop through each element of values for 'chunklen' 47for($count = 0; $count < count($values); $count++) { 48 echo "-- Iteration ".($count+1). " --\n"; 49 var_dump( chunk_split($heredoc_str, $values[$count], $ending) ); 50} 51 52echo "Done" 53?> 54--EXPECTF-- 55*** Testing chunk_split() : different 'chunklen' with heredoc 'str' *** 56-- Iteration 1 -- 57 58Warning: chunk_split(): Chunk length should be greater than zero in %s on line %d 59bool(false) 60-- Iteration 2 -- 61string(504) "T:::h:::i:::s:::':::s::: :::h:::e:::r:::e:::d:::o:::c::: :::s:::t:::r:::i:::n:::g::: :::w:::i:::t:::h::: ::: ::: :::a:::n:::d::: ::: 62::: :::w:::h:::i:::t:::e::: :::s:::p:::a:::c:::e::: :::c:::h:::a:::r:::.::: 63:::I:::t::: :::h:::a:::s::: :::_:::s:::p:::e:::c:::i:::@:::l::: :::c:::h:::@:::r:::$::: :::2:::2:::2:::2::: :::!:::!:::!:::N:::o:::w::: :::\:::k::: :::a:::s::: :::e:::s:::c:::a:::p:::e::: :::c:::h:::a:::r::: :::t:::o::: :::t:::e:::s:::t::: 64:::c:::h:::u:::n:::k:::_:::s:::p:::l:::i:::t:::(:::):::" 65-- Iteration 3 -- 66 67Warning: chunk_split(): Chunk length should be greater than zero in %s on line %d 68bool(false) 69-- Iteration 4 -- 70string(129) "This's heredoc string with and 71 white space char. 72It has _speci@l ch@r$ 2222 !!!Now \k as escape char to test 73chunk_split():::" 74-- Iteration 5 -- 75string(141) "This's heredoc string with::: and 76 white space char.::: 77It has _speci@l ch@r$ 222:::2 !!!Now \k as escape char::: to test 78chunk_split():::" 79-- Iteration 6 -- 80string(129) "This's heredoc string with and 81 white space char. 82It has _speci@l ch@r$ 2222 !!!Now \k as escape char to test 83chunk_split():::" 84-- Iteration 7 -- 85 86Warning: chunk_split() expects parameter 2 to be integer, float given in %s on line %d 87NULL 88-- Iteration 8 -- 89 90Warning: chunk_split(): Chunk length should be greater than zero in %s on line %d 91bool(false) 92Done 93