1--TEST--
2Test strncasecmp() function: usage variations - heredoc strings
3--FILE--
4<?php
5/* Prototype  : int strncasecmp ( string $str1, string $str2, int $len );
6 * Description: Binary safe case-insensitive string comparison of the first n characters
7 * Source code: Zend/zend_builtin_functions.c
8*/
9
10/* Test strncasecmp() function with here-doc strings for 'str1', 'str2' */
11
12echo "*** Test strncasecmp() function: with here-doc strings ***\n";
13
14/* multi line heredoc string */
15$multi_line_str = <<<EOD
16Example of string
17spanning multiple lines
18using heredoc syntax.
19EOD;
20
21/* identifier name contains underscore */
22$identifier_str1 = <<<identifier_str1
23Example of heredoc
24string, whose identifier
25having underscore("_")
26& numeric value.
27identifier_str1;
28
29/* identifier name starts with underscore */
30$identifier_str2 = <<<_identifier_str2
31Hello, World
32hello, world
33_identifier_str2;
34
35/* string containing control character */
36$control_char_str = <<<EOD
37Hello, World\n
38Hello\0World
39EOD;
40
41/* heredoc string with quote chars & slash */
42$quote_char_string = <<<EOD
43it's bright,but i cann't see it.
44"things in double quote"
45'things in single quote'
46this\line is /with\slashs
47EOD;
48
49/* heredoc string with blank line */
50$blank_line = <<<EOD
51
52EOD;
53
54/* empty heredoc string */
55$empty_string = <<<EOD
56EOD;
57
58$strings = array(
59  $multi_line_str,
60  $identifier_str1,
61  $identifier_str2,
62  $control_char_str,
63  $quote_char_string,
64  $blank_line,
65  $empty_string
66);
67/* loop through to compare the strings */
68$index2 = count($strings);
69for($index1 = 0; $index1 < count($strings); $index1++) {
70  $index2--;
71  var_dump( strncasecmp( $strings[$index1], $strings[$index1], strlen($strings[$index1]) ) );
72  var_dump( strncasecmp( $strings[$index1], $strings[$index2], strlen($strings[$index1]) ) );
73}
74echo "*** Done ***\n";
75?>
76--EXPECTF--
77*** Test strncasecmp() function: with here-doc strings ***
78int(0)
79int(63)
80int(0)
81int(84)
82int(0)
83int(-1)
84int(0)
85int(0)
86int(0)
87int(1)
88int(0)
89int(0)
90int(0)
91int(0)
92*** Done ***
93