1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
|
--TEST--
Test strcspn() function : usage variations - with heredoc strings, varying mask & default start and len args
--FILE--
<?php
/* Prototype : proto int strcspn(string str, string mask [,int start [,int len]])
* Description: Finds length of initial segment consisting entirely of characters not found in mask.
If start or/and length is provided works like strcspn(substr($s,$start,$len),$bad_chars)
* Source code: ext/standard/string.c
* Alias to functions: none
*/
/*
* Testing strcspn() : with heredoc string, varying mask and default start and len arguments
*/
echo "*** Testing strcspn() : with different mask strings ***\n";
// initialing required variables
// defining different heredoc strings
$empty_heredoc = <<<EOT
EOT;
$heredoc_with_newline = <<<EOT
\n
EOT;
$heredoc_with_characters = <<<EOT
first line of heredoc string
second line of heredoc string
third line of heredocstring
EOT;
$heredoc_with_newline_and_tabs = <<<EOT
hello\tworld\nhello\nworld\n
EOT;
$heredoc_with_alphanumerics = <<<EOT
hello123world456
1234hello\t1234
EOT;
$heredoc_with_embedded_nulls = <<<EOT
hello\0world\0hello
\0hello\0
EOT;
$heredoc_with_hexa_octal = <<<EOT
hello\0\100\xaaworld\0hello
\0hello\0
EOT;
$heredoc_strings = array(
$empty_heredoc,
$heredoc_with_newline,
$heredoc_with_characters,
$heredoc_with_newline_and_tabs,
$heredoc_with_alphanumerics,
$heredoc_with_embedded_nulls,
$heredoc_with_hexa_octal
);
// defining array of mask strings
$mask_array = array(
"",
'',
"\n\trsti \l",
'\n\trsti \l',
"\t",
"t\ ",
'\t',
"\t\ ",
" \t",
"\t\i\100\xaa"
);
// loop through each element of the arrays for string and mask arguments
$count = 1;
foreach($heredoc_strings as $str) {
echo "\n-- Iteration $count --\n";
foreach($mask_array as $mask) {
var_dump( strcspn($str,$mask) ); // with default start and len value
}
$count++;
}
echo "Done"
?>
--EXPECTF--
*** Testing strcspn() : with different mask strings ***
-- Iteration 1 --
int(0)
int(0)
int(0)
int(0)
int(0)
int(0)
int(0)
int(0)
int(0)
int(0)
-- Iteration 2 --
int(2)
int(2)
int(0)
int(2)
int(2)
int(2)
int(2)
int(2)
int(2)
int(2)
-- Iteration 3 --
int(86)
int(86)
int(1)
int(1)
int(86)
int(4)
int(4)
int(5)
int(5)
int(1)
-- Iteration 4 --
int(24)
int(24)
int(2)
int(2)
int(5)
int(24)
int(24)
int(5)
int(5)
int(5)
-- Iteration 5 --
int(31)
int(31)
int(2)
int(2)
int(26)
int(31)
int(31)
int(26)
int(26)
int(26)
-- Iteration 6 --
int(5)
int(5)
int(2)
int(2)
int(25)
int(25)
int(25)
int(25)
int(25)
int(25)
-- Iteration 7 --
int(5)
int(5)
int(2)
int(2)
int(27)
int(27)
int(27)
int(27)
int(27)
int(6)
Done
|