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