summaryrefslogtreecommitdiff
path: root/ext/standard/tests/strings
diff options
context:
space:
mode:
authorMark A. Hershberger <mah@debian.(none)>2009-03-25 00:37:27 -0400
committerMark A. Hershberger <mah@debian.(none)>2009-03-25 00:37:27 -0400
commit2d4e5b09576bb4f0ba716cc82cdf29ea04d9184b (patch)
tree41ccc042009cba53e4ce43e727fcba4c1cfbf7f3 /ext/standard/tests/strings
parentd29a4fd2dd3b5d4cf6e80b602544d7b71d794e76 (diff)
downloadphp-upstream/5.2.2.tar.gz
Imported Upstream version 5.2.2upstream/5.2.2
Diffstat (limited to 'ext/standard/tests/strings')
-rw-r--r--ext/standard/tests/strings/bug22207.phpt4
-rw-r--r--ext/standard/tests/strings/bug26819.phpt2
-rw-r--r--ext/standard/tests/strings/bug36392.phpt16
-rw-r--r--ext/standard/tests/strings/bug38770.phpt25
-rw-r--r--ext/standard/tests/strings/bug39350.phpt13
-rw-r--r--ext/standard/tests/strings/bug39621.phptbin0 -> 866 bytes
-rw-r--r--ext/standard/tests/strings/bug39873.phpt17
-rw-r--r--ext/standard/tests/strings/bug40432.phpt8
-rw-r--r--ext/standard/tests/strings/bug40637.phpt13
-rw-r--r--ext/standard/tests/strings/bug40704.phpt13
-rw-r--r--ext/standard/tests/strings/bug40754.phpt63
-rw-r--r--ext/standard/tests/strings/bug40915.phptbin0 -> 347 bytes
-rw-r--r--ext/standard/tests/strings/convert_cyr_string.phpt54
-rw-r--r--ext/standard/tests/strings/crypt.phpt13
-rw-r--r--ext/standard/tests/strings/get_meta_tags.phpt95
-rw-r--r--ext/standard/tests/strings/highlight_file.phpt68
-rw-r--r--ext/standard/tests/strings/htmlentities02.phpt6
-rw-r--r--ext/standard/tests/strings/levenshtein.phpt88
-rw-r--r--ext/standard/tests/strings/ltrim.phpt83
-rw-r--r--ext/standard/tests/strings/metaphone.phpt41
-rw-r--r--ext/standard/tests/strings/pack.phpt385
-rw-r--r--ext/standard/tests/strings/pathinfo.phpt14
-rw-r--r--ext/standard/tests/strings/php_strip_whitespace.phpt52
-rwxr-xr-xext/standard/tests/strings/printf.phpt697
-rwxr-xr-xext/standard/tests/strings/printf_64bit.phpt695
-rw-r--r--ext/standard/tests/strings/rtrim.phptbin0 -> 2422 bytes
-rw-r--r--ext/standard/tests/strings/sha1.phpt55
-rw-r--r--ext/standard/tests/strings/soundex.phpt55
-rwxr-xr-xext/standard/tests/strings/sprintf_f.phpt2
-rwxr-xr-xext/standard/tests/strings/sprintf_f_2.phpt114
-rwxr-xr-xext/standard/tests/strings/sprintf_f_3.phpt23
-rw-r--r--ext/standard/tests/strings/str_ireplace.phpt101
-rw-r--r--ext/standard/tests/strings/str_pad.phptbin0 -> 9070 bytes
-rw-r--r--ext/standard/tests/strings/strcasecmp.phptbin0 -> 22190 bytes
-rw-r--r--ext/standard/tests/strings/strcmp.phptbin0 -> 19960 bytes
-rw-r--r--ext/standard/tests/strings/stristr.phpt43
-rw-r--r--ext/standard/tests/strings/strlen.phptbin0 -> 7030 bytes
-rw-r--r--ext/standard/tests/strings/substr_compare.phpt2
-rw-r--r--ext/standard/tests/strings/ucfirst.phptbin0 -> 6055 bytes
-rw-r--r--ext/standard/tests/strings/uuencode.phpt40
40 files changed, 2875 insertions, 25 deletions
diff --git a/ext/standard/tests/strings/bug22207.phpt b/ext/standard/tests/strings/bug22207.phpt
index 688bb5b74..32a15d73c 100644
--- a/ext/standard/tests/strings/bug22207.phpt
+++ b/ext/standard/tests/strings/bug22207.phpt
@@ -6,6 +6,6 @@ Bug #22207 (missing 0 when using the e notation in *printf functions)
var_dump(sprintf("%10.5e\n", 1.1));
?>
--EXPECT--
-1.1000e+0
-string(11) " 1.1000e+0
+1.10000e+0
+string(11) "1.10000e+0
"
diff --git a/ext/standard/tests/strings/bug26819.phpt b/ext/standard/tests/strings/bug26819.phpt
index 4a5353943..2d639a932 100644
--- a/ext/standard/tests/strings/bug26819.phpt
+++ b/ext/standard/tests/strings/bug26819.phpt
@@ -6,4 +6,4 @@ $a = array();
var_dump(http_build_query($a));
?>
--EXPECT--
-NULL
+string(0) ""
diff --git a/ext/standard/tests/strings/bug36392.phpt b/ext/standard/tests/strings/bug36392.phpt
new file mode 100644
index 000000000..8e4cd16c6
--- /dev/null
+++ b/ext/standard/tests/strings/bug36392.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Bug #36392 (wrong number of decimal digits with %e specifier in sprintf)
+--FILE--
+<?php
+ echo sprintf("%e\n", 1.123456789);
+ echo sprintf("%.10e\n", 1.123456789);
+ echo sprintf("%.0e\n", 1.123456789);
+ echo sprintf("%.1e\n", 1.123456789);
+ echo sprintf("%5.1e\n", 1.123456789);
+?>
+--EXPECT--
+1.123457e+0
+1.1234567890e+0
+1e+0
+1.1e+0
+1.1e+0
diff --git a/ext/standard/tests/strings/bug38770.phpt b/ext/standard/tests/strings/bug38770.phpt
new file mode 100644
index 000000000..2494a911b
--- /dev/null
+++ b/ext/standard/tests/strings/bug38770.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #38770 (unpack() broken with longs on 64 bit machines)
+--FILE--
+<?php
+
+foreach (array('N','I','l') as $v) {
+ print_r(unpack($v, pack($v, -30000)));
+}
+
+echo "Done\n";
+?>
+--EXPECT--
+Array
+(
+ [1] => -30000
+)
+Array
+(
+ [1] => -30000
+)
+Array
+(
+ [1] => -30000
+)
+Done
diff --git a/ext/standard/tests/strings/bug39350.phpt b/ext/standard/tests/strings/bug39350.phpt
new file mode 100644
index 000000000..53d58b709
--- /dev/null
+++ b/ext/standard/tests/strings/bug39350.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Bug #39350 (implode/join() crash on empty input strings)
+--FILE--
+<?php
+
+implode('', array(null));
+implode('', array(false));
+implode('', array(""));
+
+echo "Done\n";
+?>
+--EXPECT--
+Done
diff --git a/ext/standard/tests/strings/bug39621.phpt b/ext/standard/tests/strings/bug39621.phpt
new file mode 100644
index 000000000..1a33147b6
--- /dev/null
+++ b/ext/standard/tests/strings/bug39621.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/bug39873.phpt b/ext/standard/tests/strings/bug39873.phpt
new file mode 100644
index 000000000..e73f3c851
--- /dev/null
+++ b/ext/standard/tests/strings/bug39873.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Bug #39873 (number_format() breaks with locale & decimal points)
+--SKIPIF--
+<?php
+if (!setlocale(LC_ALL, "ita","it","Italian","it_IT","it_IT.ISO8859-1","it_IT.ISO_8859-1")) {
+ die("skip locale needed for this test is not supported on this platform");
+}
+?>
+--FILE--
+<?php
+ setlocale(LC_ALL, "ita","it","Italian","it_IT","it_IT.ISO8859-1","it_IT.ISO_8859-1");
+ $num = 0+"1234.56";
+ echo number_format($num,2);
+ echo "\n";
+?>
+--EXPECT--
+1,234.56
diff --git a/ext/standard/tests/strings/bug40432.phpt b/ext/standard/tests/strings/bug40432.phpt
new file mode 100644
index 000000000..6db2e94e5
--- /dev/null
+++ b/ext/standard/tests/strings/bug40432.phpt
@@ -0,0 +1,8 @@
+--TEST--
+Bug #40432 (strip_tags() fails with greater than in attribute)
+--FILE--
+<?php
+echo strip_tags('<span title="test > all">this</span>') . "\n";
+?>
+--EXPECT--
+this
diff --git a/ext/standard/tests/strings/bug40637.phpt b/ext/standard/tests/strings/bug40637.phpt
new file mode 100644
index 000000000..5669083aa
--- /dev/null
+++ b/ext/standard/tests/strings/bug40637.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Bug #40637 (strip_tags() does not handle single quotes correctly)
+--FILE--
+<?php
+
+$html = '<span title="Bug \' Trigger">Text</span>';
+var_dump(strip_tags($html));
+
+echo "Done\n";
+?>
+--EXPECTF--
+string(4) "Text"
+Done
diff --git a/ext/standard/tests/strings/bug40704.phpt b/ext/standard/tests/strings/bug40704.phpt
new file mode 100644
index 000000000..82e91b5c8
--- /dev/null
+++ b/ext/standard/tests/strings/bug40704.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Bug #40704 (strip_tags() does not handle single quotes correctly)
+--FILE--
+<?php
+
+$html = "<div>Bug ' Trigger</div> Missing Text";
+var_dump(strip_tags($html));
+
+echo "Done\n";
+?>
+--EXPECT--
+string(26) "Bug ' Trigger Missing Text"
+Done
diff --git a/ext/standard/tests/strings/bug40754.phpt b/ext/standard/tests/strings/bug40754.phpt
new file mode 100644
index 000000000..23a459317
--- /dev/null
+++ b/ext/standard/tests/strings/bug40754.phpt
@@ -0,0 +1,63 @@
+--TEST--
+Bug #40754 (Overflow checks inside string functions)
+--FILE--
+<?php
+
+$v = 2147483647;
+
+var_dump(substr("abcde", 1, $v));
+var_dump(substr_replace("abcde", "x", $v, $v));
+
+var_dump(strspn("abcde", "abc", $v, $v));
+var_dump(strcspn("abcde", "abc", $v, $v));
+
+var_dump(substr_count("abcde", "abc", $v, $v));
+var_dump(substr_compare("abcde", "abc", $v, $v));
+
+var_dump(stripos("abcde", "abc", $v));
+var_dump(substr_count("abcde", "abc", $v, 1));
+var_dump(substr_count("abcde", "abc", 1, $v));
+var_dump(strpos("abcde", "abc", $v));
+var_dump(stripos("abcde", "abc", $v));
+var_dump(strrpos("abcde", "abc", $v));
+var_dump(strripos("abcde", "abc", $v));
+var_dump(strncmp("abcde", "abc", $v));
+var_dump(chunk_split("abcde", $v, "abc"));
+var_dump(substr("abcde", $v, $v));
+
+?>
+--EXPECTF--
+string(4) "bcde"
+bool(false)
+bool(false)
+bool(false)
+
+Warning: substr_count(): Offset value 2147483647 exceeds string length. in %s on line %d
+bool(false)
+
+Warning: substr_compare(): The start position cannot exceed initial string length in %s on line %d
+bool(false)
+
+Warning: stripos(): Offset not contained in string. in %s on line %d
+bool(false)
+
+Warning: substr_count(): Offset value 2147483647 exceeds string length. in %s on line %d
+bool(false)
+
+Warning: substr_count(): Length value 2147483647 exceeds string length. in %s on line %d
+bool(false)
+
+Warning: strpos(): Offset not contained in string. in %s on line %d
+bool(false)
+
+Warning: stripos(): Offset not contained in string. in %s on line %d
+bool(false)
+
+Notice: strrpos(): Offset is greater than the length of haystack string in %s on line %d
+bool(false)
+
+Notice: strripos(): Offset is greater than the length of haystack string in %s on line %d
+bool(false)
+int(2)
+string(8) "abcdeabc"
+bool(false)
diff --git a/ext/standard/tests/strings/bug40915.phpt b/ext/standard/tests/strings/bug40915.phpt
new file mode 100644
index 000000000..9b26896e7
--- /dev/null
+++ b/ext/standard/tests/strings/bug40915.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/convert_cyr_string.phpt b/ext/standard/tests/strings/convert_cyr_string.phpt
new file mode 100644
index 000000000..a6f365731
--- /dev/null
+++ b/ext/standard/tests/strings/convert_cyr_string.phpt
@@ -0,0 +1,54 @@
+--TEST--
+basic convert_cyr_string() tests
+--FILE--
+<?php
+
+var_dump(convert_cyr_string());
+var_dump(convert_cyr_string(""));
+var_dump(convert_cyr_string("", ""));
+var_dump(convert_cyr_string("", "", ""));
+var_dump(convert_cyr_string(array(), array(), array()));
+
+var_dump(convert_cyr_string("[[[[[[", "q", "m"));
+var_dump(convert_cyr_string("[[[[[[", "k", "w"));
+var_dump(convert_cyr_string("[[[[[[", "m", "a"));
+var_dump(convert_cyr_string("[[[[[[", "d", "i"));
+var_dump(convert_cyr_string("[[[[[[", "w", "k"));
+var_dump(convert_cyr_string("[[[[[[", "i", "q"));
+var_dump(convert_cyr_string("", "d", "i"));
+
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: Wrong parameter count for convert_cyr_string() in %s on line %d
+NULL
+
+Warning: Wrong parameter count for convert_cyr_string() in %s on line %d
+NULL
+
+Warning: Wrong parameter count for convert_cyr_string() in %s on line %d
+NULL
+
+Warning: convert_cyr_string(): Unknown source charset: in %s on line %d
+
+Warning: convert_cyr_string(): Unknown destination charset: in %s on line %d
+string(0) ""
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+string(5) "Array"
+
+Warning: convert_cyr_string(): Unknown source charset: q in %s on line %d
+string(6) "[[[[[["
+string(6) "[[[[[["
+string(6) "[[[[[["
+string(6) "[[[[[["
+string(6) "[[[[[["
+
+Warning: convert_cyr_string(): Unknown destination charset: q in %s on line %d
+string(6) "[[[[[["
+string(0) ""
+Done
diff --git a/ext/standard/tests/strings/crypt.phpt b/ext/standard/tests/strings/crypt.phpt
index 5368178e1..ce178f684 100644
--- a/ext/standard/tests/strings/crypt.phpt
+++ b/ext/standard/tests/strings/crypt.phpt
@@ -24,9 +24,20 @@ echo (CRYPT_EXT_DES) ? ((crypt($str, $salt2) === $res_2) ? 'EXT' : 'EXT - ERROR
echo (CRYPT_MD5) ? ((crypt($str, $salt3) === $res_3) ? 'MD5' : 'MD5 - ERROR') : 'MD5', "\n";
echo (CRYPT_BLOWFISH) ? ((crypt($str, $salt4) === $res_4) ? 'BLO' : 'BLO - ERROR') : 'BLO', "\n";
+var_dump(crypt($str));
+var_dump(crypt());
+var_dump(crypt("", "", ""));
+
?>
---EXPECT--
+--EXPECTF--
STD
EXT
MD5
BLO
+string(%d) "%s"
+
+Warning: crypt() expects at least 1 parameter, 0 given in %s on line %d
+NULL
+
+Warning: crypt() expects at most 2 parameters, 3 given in %s on line %d
+NULL
diff --git a/ext/standard/tests/strings/get_meta_tags.phpt b/ext/standard/tests/strings/get_meta_tags.phpt
new file mode 100644
index 000000000..f086b99b7
--- /dev/null
+++ b/ext/standard/tests/strings/get_meta_tags.phpt
@@ -0,0 +1,95 @@
+--TEST--
+get_meta_tags() tests
+--FILE--
+<?php
+
+$filename = dirname(__FILE__)."/get_meta_tags.html";
+
+$data = <<<DATA
+<meta name="author" content="name">
+<meta name="keywords" content="php documentation">
+<meta name="DESCRIPTION" content="a php manual">
+<meta name="geo.position" content="49.33;-86.59">
+</head> <!-- parsing stops here -->
+DATA;
+
+$data1 = <<<DATA
+<html>
+ <head>
+ <meta name="author" content="name">
+ <meta name="keywords" content="php documentation">
+ <meta name="DESCRIPTION" content="a php manual">
+ <meta name="geo.position" content="49.33;-86.59">
+ </head>
+ <body>
+ <meta name="author" content="name1">
+ <meta name="keywords" content="php documentation1">
+ <meta name="DESCRIPTION" content="a php manual1">
+ <meta name="geo.position" content="49.33;-86.591">
+ </body>
+</html>
+DATA;
+
+$data2 = <<<DATA
+<meta name="author" content="name"
+<meta name="keywords" content="php documentation">
+DATA;
+
+$data3 = <<<DATA
+<meta <meta name="keywords" content="php documentation">
+DATA;
+
+$data4 = <<<DATA
+<meta name="author" content="name"
+<meta name="keywords" content="php documentation"
+DATA;
+
+$array = array($data, $data1, $data2, $data3, $data4, "", "<>", "<meta<<<<<");
+
+foreach ($array as $html) {
+ file_put_contents($filename, $html);
+ var_dump(get_meta_tags($filename));
+}
+
+@unlink($filename);
+
+echo "Done\n";
+?>
+--EXPECTF--
+array(4) {
+ ["author"]=>
+ string(4) "name"
+ ["keywords"]=>
+ string(17) "php documentation"
+ ["description"]=>
+ string(12) "a php manual"
+ ["geo_position"]=>
+ string(12) "49.33;-86.59"
+}
+array(4) {
+ ["author"]=>
+ string(4) "name"
+ ["keywords"]=>
+ string(17) "php documentation"
+ ["description"]=>
+ string(12) "a php manual"
+ ["geo_position"]=>
+ string(12) "49.33;-86.59"
+}
+array(1) {
+ ["keywords"]=>
+ string(17) "php documentation"
+}
+array(1) {
+ ["keywords"]=>
+ string(17) "php documentation"
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+Done
diff --git a/ext/standard/tests/strings/highlight_file.phpt b/ext/standard/tests/strings/highlight_file.phpt
new file mode 100644
index 000000000..2c83ee299
--- /dev/null
+++ b/ext/standard/tests/strings/highlight_file.phpt
@@ -0,0 +1,68 @@
+--TEST--
+highlight_file() tests
+--INI--
+highlight.string=#DD0000
+highlight.comment=#FF9900
+highlight.keyword=#007700
+highlight.bg=#FFFFFF
+highlight.default=#0000BB
+highlight.html=#000000
+--FILE--
+<?php
+
+$filename = dirname(__FILE__)."/highlight_file.dat";
+
+var_dump(highlight_file());
+var_dump(highlight_file($filename));
+
+$data = <<<DATA
+<?php echo "test"; ?>
+DATA;
+
+file_put_contents($filename, $data);
+var_dump(highlight_file($filename));
+
+$data = <<<DATA
+<?php echo "test ?>
+DATA;
+
+file_put_contents($filename, $data);
+var_dump(highlight_file($filename));
+
+$data = '
+<?php
+ class test {
+ public $var = 1;
+ private function foo() { echo "foo"; }
+ public function bar() { var_dump(test::foo()); }
+ }
+?>';
+
+file_put_contents($filename, $data);
+var_dump(highlight_file($filename));
+
+
+@unlink($filename);
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: highlight_file() expects at least 1 parameter, 0 given in %s on line %d
+bool(false)
+
+Warning: highlight_file(%shighlight_file.dat): failed to open stream: No such file or directory in %s on line %d
+
+Warning: highlight_file(): Failed opening '%shighlight_file.dat' for highlighting in %s on line %d
+bool(false)
+<code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">"test"</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code>bool(true)
+<code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">"test&nbsp;?&gt;</span>
+</span>
+</code>bool(true)
+<code><span style="color: #000000">
+<br /><span style="color: #0000BB">&lt;?php&nbsp;<br />&nbsp;</span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">test&nbsp;</span><span style="color: #007700">{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000BB">$var&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">foo</span><span style="color: #007700">()&nbsp;{&nbsp;echo&nbsp;</span><span style="color: #DD0000">"foo"</span><span style="color: #007700">;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">bar</span><span style="color: #007700">()&nbsp;{&nbsp;</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">test</span><span style="color: #007700">::</span><span style="color: #0000BB">foo</span><span style="color: #007700">());&nbsp;}<br />&nbsp;}&nbsp;&nbsp;<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code>bool(true)
+Done
diff --git a/ext/standard/tests/strings/htmlentities02.phpt b/ext/standard/tests/strings/htmlentities02.phpt
index 666c4f650..babec44b5 100644
--- a/ext/standard/tests/strings/htmlentities02.phpt
+++ b/ext/standard/tests/strings/htmlentities02.phpt
@@ -2,8 +2,8 @@
htmlentities() test 2 (setlocale / fr_FR.ISO-8859-15)
--SKIPIF--
<?php
-$result = (bool)setlocale(LC_CTYPE, "fr_FR.ISO-8859-15", "fr_FR.ISO8859-15");
-if (!$result || preg_match('/ISO/i', setlocale(LC_CTYPE, 0)) == 0) {
+$result = (bool)setlocale(LC_CTYPE, "fr_FR.ISO-8859-15", "fr_FR.ISO8859-15", 'fr_FR@euro');
+if (!$result) {
die("skip setlocale() failed\n");
}
echo "warn possibly braindead libc\n";
@@ -14,7 +14,7 @@ default_charset=
mbstring.internal_encoding=none
--FILE--
<?php
- setlocale( LC_CTYPE, "fr_FR.ISO-8859-15", "fr_FR.ISO8859-15" );
+ setlocale(LC_CTYPE, "fr_FR.ISO-8859-15", "fr_FR.ISO8859-15", 'fr_FR@euro');
var_dump(htmlentities("\xbc\xbd\xbe", ENT_QUOTES, ''));
?>
--EXPECT--
diff --git a/ext/standard/tests/strings/levenshtein.phpt b/ext/standard/tests/strings/levenshtein.phpt
new file mode 100644
index 000000000..d7d5e7a44
--- /dev/null
+++ b/ext/standard/tests/strings/levenshtein.phpt
@@ -0,0 +1,88 @@
+--TEST--
+levenshtein() function test
+--FILE--
+<?php
+
+function test_me($title,$expect,$text1,$text2,$cost1="",$cost2="",$cost3="") {
+
+ if ($cost1=="") {
+ $result=levenshtein($text1,$text2);
+ }
+ elseif ($cost2=="") {
+ $result=levenshtein($text1,$text2,$cost1);
+ }
+ else {
+ $result=levenshtein($text1,$text2,$cost1,$cost2,$cost3);
+ }
+ if($result==$expect) return 0;
+
+ echo "$title: result is $result instead of $expect ";
+ echo "for '$text1'/'$text2' ";
+ if($cost1) echo "($cost1:$cost2:$cost3)";
+ echo "\n";
+
+ return 1;
+}
+
+$n=0;
+
+$n += test_me("equal" , 0, "12345", "12345");
+$n += test_me("1st empty" , 3, "", "xzy");
+$n += test_me("2nd empty" , 3, "xzy", "");
+$n += test_me("both empty" , 0, "", "");
+$n += test_me("1 char" , 1, "1", "2");
+$n += test_me("2 char swap", 2, "12", "21");
+
+$n += test_me("inexpensive delete", 2, "2121", "11", 2, 1, 1);
+$n += test_me("expensive delete" , 10, "2121", "11", 2, 1, 5);
+$n += test_me("inexpensive insert", 2, "11", "2121", 1, 1, 1);
+$n += test_me("expensive insert" , 10, "11", "2121", 5, 1, 1);
+
+$n += test_me("expensive replace" , 3, "111", "121", 2, 3, 2);
+$n += test_me("very expensive replace", 4, "111", "121", 2, 9, 2);
+
+$n += test_me("bug #7368", 2, "13458", "12345");
+$n += test_me("bug #7368", 2, "1345", "1234");
+
+$n += test_me("bug #6562", 1, "debugg", "debug");
+$n += test_me("bug #6562", 1, "ddebug", "debug");
+$n += test_me("bug #6562", 2, "debbbug", "debug");
+$n += test_me("bug #6562", 1, "debugging", "debuging");
+
+$n += test_me("bug #16473", 2, "a", "bc");
+$n += test_me("bug #16473", 2, "xa", "xbc");
+$n += test_me("bug #16473", 2, "xax", "xbcx");
+$n += test_me("bug #16473", 2, "ax", "bcx");
+
+$n += test_me("custom", -1, "111", "121", "my_levcode");
+$n += test_me("lt maxlength1", 254, "AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsu", "A");
+$n += test_me("gt maxlength1", -1, "AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuv", "A");
+
+$n += test_me("lt maxlength2", 254, "A", "AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsu");
+$n += test_me("gt maxlength2", -1, "A", "AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuv");
+
+echo ($n==0)?"all passed\n":"$n failed\n";
+
+var_dump(levenshtein(array(), array()));
+var_dump(levenshtein("", "", -1, -1, -1));
+var_dump(levenshtein("", "", 10, 10, 10));
+var_dump(levenshtein(""));
+
+?>
+--EXPECTF--
+Warning: levenshtein(): The general Levenshtein support is not there yet in %s on line %d
+
+Warning: levenshtein(): Argument string(s) too long in %s on line %d
+
+Warning: levenshtein(): Argument string(s) too long in %s on line %d
+all passed
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+int(0)
+int(0)
+int(0)
+
+Warning: Wrong parameter count for levenshtein() in %s on line %d
+NULL
diff --git a/ext/standard/tests/strings/ltrim.phpt b/ext/standard/tests/strings/ltrim.phpt
new file mode 100644
index 000000000..cb64b9cd3
--- /dev/null
+++ b/ext/standard/tests/strings/ltrim.phpt
@@ -0,0 +1,83 @@
+--TEST--
+Test ltrim() function
+--FILE--
+<?php
+
+/* Testing for Error conditions */
+
+/* Invalid Number of Arguments */
+
+ echo "\n *** Output for Error Conditions ***\n";
+
+ echo "\n *** Output for zero argument ***\n";
+ var_dump( ltrim() );
+
+ echo "\n *** Output for more than valid number of arguments (Valid are 1 or 2 arguments) ***\n";
+ var_dump( ltrim("", " ", 1) );
+
+/* heredoc string */
+$str = <<<EOD
+us
+ing heredoc string
+EOD;
+
+echo "\n *** Using heredoc string ***\n";
+var_dump( ltrim($str, "\nusi") );
+
+/* Testing the Normal behaviour of ltrim() function */
+
+ echo "\n *** Output for Normal Behaviour ***\n";
+ var_dump ( ltrim(" \t\0 ltrim test") ); /* without second Argument */
+ var_dump ( ltrim(" ltrim test" , "") ); /* no characters in second Argument */
+ var_dump ( ltrim(" ltrim test", NULL) ); /* with NULL as second Argument */
+ var_dump ( ltrim(" ltrim test", true) ); /* with boolean value as second Argument */
+ var_dump ( ltrim(" ltrim test", " ") ); /* with single space as second Argument */
+ var_dump ( ltrim("\t\n\r\0\x0B ltrim test", "\t\n\r\0\x0B") ); /* with multiple escape sequences as second Argument */
+ var_dump ( ltrim("ABCXYZltrim test", "A..Z") ); /* with characters range as second Argument */
+ var_dump ( ltrim("0123456789ltrim test", "0..9") ); /* with numbers range as second Argument */
+ var_dump ( ltrim("@$#ltrim test", "#@$") ); /* with some special characters as second Argument */
+
+
+ echo "\n *** Output for scalar argument) ***\n";
+ var_dump( ltrim( 12345 ) ); /* Scalar argument */
+
+ echo "\n *** Output for NULL argument) ***\n";
+ var_dump( ltrim(NULL) ); /* NULL Argument */
+
+echo "\nDone\n";
+
+?>
+--EXPECTF--
+*** Output for Error Conditions ***
+
+ *** Output for zero argument ***
+
+Warning: Wrong parameter count for ltrim() in %s on line %d
+NULL
+
+ *** Output for more than valid number of arguments (Valid are 1 or 2 arguments) ***
+
+Warning: Wrong parameter count for ltrim() in %s on line %d
+NULL
+
+ *** Using heredoc string ***
+string(17) "ng heredoc string"
+
+ *** Output for Normal Behaviour ***
+string(10) "ltrim test"
+string(13) " ltrim test"
+string(18) " ltrim test"
+string(18) " ltrim test"
+string(10) "ltrim test"
+string(11) " ltrim test"
+string(10) "ltrim test"
+string(10) "ltrim test"
+string(10) "ltrim test"
+
+ *** Output for scalar argument) ***
+string(5) "12345"
+
+ *** Output for NULL argument) ***
+string(0) ""
+
+Done
diff --git a/ext/standard/tests/strings/metaphone.phpt b/ext/standard/tests/strings/metaphone.phpt
new file mode 100644
index 000000000..d1aa9af54
--- /dev/null
+++ b/ext/standard/tests/strings/metaphone.phpt
@@ -0,0 +1,41 @@
+--TEST--
+metaphone() tests
+--FILE--
+<?php
+
+var_dump(metaphone());
+var_dump(metaphone(""));
+var_dump(metaphone(-1));
+var_dump(metaphone(-1, -1));
+
+var_dump(metaphone("valid phrase", -1));
+var_dump(metaphone("valid phrase", 0));
+var_dump(metaphone("valid phrase", 10000));
+
+$array = array(
+"They fell forward, grovelling heedlessly on the cold earth.",
+"But the shadow of horror wheeled and returned, passing lower now, right above them, sweeping the fen-reek with its ghastly wings.",
+"And then it was gone, flying back to Mordor with the speed of the wrath of Sauron; and behind it the wind roared away, leaving the Dead Marshes bare and bleak.",
+"The naked waste, as far as the eye could pierce, even to the distant menace of the mountains, was dappled with the fitful moonlight."
+);
+
+foreach($array as $str) {
+ var_dump(metaphone($str));
+}
+
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: metaphone() expects at least 1 parameter, 0 given in %s on line %d
+NULL
+string(0) ""
+string(0) ""
+bool(false)
+bool(false)
+string(6) "FLTFRS"
+string(6) "FLTFRS"
+string(26) "0FLFRWRTKRFLNKHTLSLN0KLTR0"
+string(56) "BT0XTFHRRHLTNTRTRNTPSNKLWRNRFTBF0MSWPNK0FNRKW0TSFSTLWNKS"
+string(69) "ANT0NTWSKNFLYNKBKTMRTRW00SPTF0R0FSRNNTBHNTT0WNTRRTWLFNK0TTMRXSBRNTBLK"
+string(56) "0NKTWSTSFRS0YKLTPRSFNT0TSTNTMNSF0MNTNSWSTPLTW00FTFLMNLFT"
+Done
diff --git a/ext/standard/tests/strings/pack.phpt b/ext/standard/tests/strings/pack.phpt
new file mode 100644
index 000000000..b36eee1e5
--- /dev/null
+++ b/ext/standard/tests/strings/pack.phpt
@@ -0,0 +1,385 @@
+--TEST--
+Generic pack()/unpack() tests
+--SKIPIF--
+<?php
+if (PHP_INT_MAX > 2147483647) {
+ die("skip 32bit test only");
+}
+?>
+--FILE--
+<?php
+print_r(unpack("A", pack("A", "hello world")));
+print_r(unpack("A*", pack("A*", "hello world")));
+echo '"'.pack("A9", "hello").'"';
+echo "\n";
+
+print_r(unpack("C", pack("C", -127)));
+print_r(unpack("C", pack("C", 127)));
+print_r(unpack("C", pack("C", 255)));
+print_r(unpack("C", pack("C", -129)));
+
+print_r(unpack("H", pack("H", 0x04)));
+
+print_r(unpack("I", pack("I", 65534)));
+print_r(unpack("I", pack("I", 0)));
+print_r(unpack("I", pack("I", -1000)));
+print_r(unpack("I", pack("I", -64434)));
+print_r(unpack("I", pack("I", 4294967296)));
+print_r(unpack("I", pack("I", -4294967296)));
+
+print_r(unpack("L", pack("L", 65534)));
+print_r(unpack("L", pack("L", 0)));
+print_r(unpack("L", pack("L", 2147483650)));
+print_r(unpack("L", pack("L", 4294967295)));
+print_r(unpack("L", pack("L", -2147483648)));
+
+print_r(unpack("N", pack("N", 65534)));
+print_r(unpack("N", pack("N", 0)));
+print_r(unpack("N", pack("N", 2147483650)));
+print_r(unpack("N", pack("N", 4294967296)));
+print_r(unpack("N", pack("N", -2147483648)));
+print_r(unpack("N", pack("N", -30000)));
+
+print_r(unpack("S", pack("S", 65534)));
+print_r(unpack("S", pack("S", 65537)));
+print_r(unpack("S", pack("S", 0)));
+print_r(unpack("S", pack("S", -1000)));
+print_r(unpack("S", pack("S", -64434)));
+print_r(unpack("S", pack("S", -65535)));
+
+print_r(unpack("V", pack("V", 65534)));
+print_r(unpack("V", pack("V", 0)));
+print_r(unpack("V", pack("V", 2147483650)));
+print_r(unpack("V", pack("V", 4294967296)));
+print_r(unpack("V", pack("V", -2147483648)));
+
+print_r(unpack("a", pack("a", "hello world")));
+print_r(unpack("a*", pack("a*", "hello world")));
+
+print_r(unpack("c", pack("c", -127)));
+print_r(unpack("c", pack("c", 127)));
+print_r(unpack("c", pack("c", 255)));
+print_r(unpack("c", pack("c", -129)));
+
+print_r(unpack("h", pack("h", 3000000)));
+
+print_r(unpack("i", pack("i", 65534)));
+print_r(unpack("i", pack("i", 0)));
+print_r(unpack("i", pack("i", -1000)));
+print_r(unpack("i", pack("i", -64434)));
+print_r(unpack("i", pack("i", -65535)));
+print_r(unpack("i", pack("i", -2147483647)));
+
+print_r(unpack("l", pack("l", 65534)));
+print_r(unpack("l", pack("l", 0)));
+print_r(unpack("l", pack("l", 2147483650)));
+print_r(unpack("l", pack("l", 4294967296)));
+print_r(unpack("l", pack("l", -2147483648)));
+
+print_r(unpack("n", pack("n", 65534)));
+print_r(unpack("n", pack("n", 65537)));
+print_r(unpack("n", pack("n", 0)));
+print_r(unpack("n", pack("n", -1000)));
+print_r(unpack("n", pack("n", -64434)));
+print_r(unpack("n", pack("n", -65535)));
+
+print_r(unpack("s", pack("s", 32767)));
+print_r(unpack("s", pack("s", 65535)));
+print_r(unpack("s", pack("s", 0)));
+print_r(unpack("s", pack("s", -1000)));
+print_r(unpack("s", pack("s", -64434)));
+print_r(unpack("s", pack("s", -65535)));
+
+print_r(unpack("v", pack("v", 65534)));
+print_r(unpack("v", pack("v", 65537)));
+print_r(unpack("v", pack("v", 0)));
+print_r(unpack("v", pack("v", -1000)));
+print_r(unpack("v", pack("v", -64434)));
+print_r(unpack("v", pack("v", -65535)));
+?>
+--EXPECT--
+Array
+(
+ [1] => h
+)
+Array
+(
+ [1] => hello world
+)
+"hello "
+Array
+(
+ [1] => 129
+)
+Array
+(
+ [1] => 127
+)
+Array
+(
+ [1] => 255
+)
+Array
+(
+ [1] => 127
+)
+Array
+(
+ [1] => 4
+)
+Array
+(
+ [1] => 65534
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => -1000
+)
+Array
+(
+ [1] => -64434
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => -2147483648
+)
+Array
+(
+ [1] => 65534
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => -2147483646
+)
+Array
+(
+ [1] => -1
+)
+Array
+(
+ [1] => -2147483648
+)
+Array
+(
+ [1] => 65534
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => -2147483646
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => -2147483648
+)
+Array
+(
+ [1] => -30000
+)
+Array
+(
+ [1] => 65534
+)
+Array
+(
+ [1] => 1
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => 64536
+)
+Array
+(
+ [1] => 1102
+)
+Array
+(
+ [1] => 1
+)
+Array
+(
+ [1] => 65534
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => -2147483646
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => -2147483648
+)
+Array
+(
+ [1] => h
+)
+Array
+(
+ [1] => hello world
+)
+Array
+(
+ [1] => -127
+)
+Array
+(
+ [1] => 127
+)
+Array
+(
+ [1] => -1
+)
+Array
+(
+ [1] => 127
+)
+Array
+(
+ [1] => 3
+)
+Array
+(
+ [1] => 65534
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => -1000
+)
+Array
+(
+ [1] => -64434
+)
+Array
+(
+ [1] => -65535
+)
+Array
+(
+ [1] => -2147483647
+)
+Array
+(
+ [1] => 65534
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => -2147483646
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => -2147483648
+)
+Array
+(
+ [1] => 65534
+)
+Array
+(
+ [1] => 1
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => 64536
+)
+Array
+(
+ [1] => 1102
+)
+Array
+(
+ [1] => 1
+)
+Array
+(
+ [1] => 32767
+)
+Array
+(
+ [1] => -1
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => -1000
+)
+Array
+(
+ [1] => 1102
+)
+Array
+(
+ [1] => 1
+)
+Array
+(
+ [1] => 65534
+)
+Array
+(
+ [1] => 1
+)
+Array
+(
+ [1] => 0
+)
+Array
+(
+ [1] => 64536
+)
+Array
+(
+ [1] => 1102
+)
+Array
+(
+ [1] => 1
+)
diff --git a/ext/standard/tests/strings/pathinfo.phpt b/ext/standard/tests/strings/pathinfo.phpt
index c1d58f05b..d9c3a2ed6 100644
--- a/ext/standard/tests/strings/pathinfo.phpt
+++ b/ext/standard/tests/strings/pathinfo.phpt
@@ -57,7 +57,7 @@ array(4) {
}
array(3) {
["dirname"]=>
- string(1) "/"
+ string(1) "%e"
["basename"]=>
string(0) ""
["filename"]=>
@@ -75,7 +75,7 @@ array(4) {
}
array(4) {
["dirname"]=>
- string(1) "/"
+ string(1) "%e"
["basename"]=>
string(1) "."
["extension"]=>
@@ -96,13 +96,13 @@ array(4) {
string(12) "pathinfo.php"
string(8) "pathinfo"
string(3) "php"
-string(%d) "%s/strings"
-string(%d) "%s/strings"
+string(%d) "%s%estrings"
+string(%d) "%s%estrings"
string(12) "pathinfo.php"
string(3) "php"
string(12) "pathinfo.php"
-string(%d) "%s/strings"
+string(%d) "%s%estrings"
string(12) "pathinfo.php"
-string(%d) "%s/strings"
-string(%d) "%s/strings"
+string(%d) "%s%estrings"
+string(%d) "%s%estrings"
Done
diff --git a/ext/standard/tests/strings/php_strip_whitespace.phpt b/ext/standard/tests/strings/php_strip_whitespace.phpt
new file mode 100644
index 000000000..4f7ef909e
--- /dev/null
+++ b/ext/standard/tests/strings/php_strip_whitespace.phpt
@@ -0,0 +1,52 @@
+--TEST--
+php_strip_whitespace() tests
+--FILE--
+<?php
+
+$filename = dirname(__FILE__)."/php_strip_whitespace.dat";
+
+var_dump(php_strip_whitespace());
+var_dump(php_strip_whitespace($filename));
+
+$data = '/* test comment */';
+file_put_contents($filename, $data);
+var_dump(php_strip_whitespace($filename));
+
+$data = '<?php /* test comment */ ?>';
+file_put_contents($filename, $data);
+var_dump(php_strip_whitespace($filename));
+
+$data = '<?php
+/* test class */
+class test {
+
+ /* function foo () */
+
+ function foo () /* {{{ */
+ {
+
+
+ echo $var; //does not exist
+ }
+ /* }}} */
+
+}
+?>';
+
+file_put_contents($filename, $data);
+var_dump(php_strip_whitespace($filename));
+
+@unlink($filename);
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: php_strip_whitespace() expects exactly 1 parameter, 0 given in %s on line %d
+bool(false)
+
+Warning: php_strip_whitespace(%sphp_strip_whitespace.dat): failed to open stream: No such file or directory in %s on line %d
+string(0) ""
+string(18) "/* test comment */"
+string(9) "<?php ?>"
+string(55) "<?php
+ class test { function foo () { echo $var; } } ?>"
+Done
diff --git a/ext/standard/tests/strings/printf.phpt b/ext/standard/tests/strings/printf.phpt
new file mode 100755
index 000000000..13a8ed071
--- /dev/null
+++ b/ext/standard/tests/strings/printf.phpt
@@ -0,0 +1,697 @@
+--TEST--
+Test printf() function (32bit)
+--INI--
+precision=14
+--SKIPIF--
+<?php
+if (PHP_INT_MAX > 2147483647) {
+ die("skip 32bit test only");
+}
+?>
+--FILE--
+<?php
+
+/* Various input arrays for different format types */
+
+$float_variation = array( "%f", "%-f", "%+f", "%7.2f", "%-7.2f", "%07.2f", "%-07.2f", "%'#7.2f" );
+$float_numbers = array( 0, 1, -1, 0.32, -0.32, 3.4. -3.4, 2.54, -2.54, 1.2345678e99, -1.2345678e99 );
+
+$int_variation = array( "%d", "%-d", "%+d", "%7.2d", "%-7.2d", "%07.2d", "%-07.2d", "%'#7.2d" );
+$int_numbers = array( 0, 1, -1, 2.7, -2.7, 23333333, -23333333, "1234" );
+
+$char_variation = array( 'a', "a", 67, -67, 99 );
+
+$string_variation = array( "%5s", "%-5s", "%05s", "%'#5s" );
+$strings = array( NULL, "abc", 'aaa' );
+
+/* Checking warning messages */
+
+/* Zero argument */
+echo "\n*** Output for zero argument ***\n";
+printf();
+
+/* Number of arguments not matching as specified in format field */
+echo "\n*** Output for insufficient number of arguments ***\n";
+$string = "dingy%sflem%dwombat";
+$nbr = 5;
+$name = "voudras";
+printf("%d $string %s", $nbr, $name);
+
+
+/* Scalar argument */
+echo "\n*** Output for scalar argument ***\n";
+printf(3);
+
+/* NULL argument */
+echo "\n*** Output for NULL as argument ***\n";
+printf(NULL);
+
+
+/* Float type variations */
+
+$counter = 1;
+echo "\n\n*** Output for float type ***\n";
+echo "\n Input Float numbers variation array is:\n";
+print_r($float_numbers);
+
+foreach( $float_variation as $float_var )
+{
+ echo "\n\nFloat Iteration $counter";
+ foreach( $float_numbers as $float_num )
+ {
+ echo "\n";
+ printf( $float_var, $float_num );
+ }
+ $counter++;
+}
+
+
+/* Integer type variations */
+
+$counter = 1;
+echo "\n\n*** Output for integer type ***\n";
+echo "\n Input Integer numbers variation array is:\n";
+print_r($int_numbers);
+
+foreach( $int_variation as $int_var )
+{
+ echo "\n\nInteger Iteration $counter";
+ foreach( $int_numbers as $int_num )
+ {
+ echo "\n";
+ printf( $int_var, $int_num );
+ }
+ $counter++;
+}
+
+
+/* Binary type variations */
+
+echo "\n\n*** Output for binary type ***\n";
+echo "\n Input numbers variation array is:\n";
+print_r($int_numbers);
+
+ foreach( $int_numbers as $bin_num )
+ {
+ echo "\n";
+ printf( "%b", $bin_num );
+ }
+
+
+/* Chararter type variations */
+echo "\n\n*** Output for char type ***\n";
+echo "\n Input Characters variation array is:\n";
+print_r($char_variation);
+
+foreach( $char_variation as $char )
+{
+ echo "\n";
+ printf( "%c", $char );
+}
+
+/* Scientific type variations */
+echo "\n\n*** Output for scientific type ***\n";
+echo "\n Input numbers variation array is:\n";
+print_r($int_numbers);
+
+foreach( $int_numbers as $num )
+{
+ echo "\n";
+ printf( "%e", $num );
+}
+
+/* Unsigned Integer type variation */
+echo "\n\n*** Output for unsigned integer type ***\n";
+echo "\n Input Integer numbers variation array is:\n";
+print_r($int_numbers);
+
+foreach( $int_numbers as $unsig_num )
+{
+ echo "\n";
+ printf( "%u", $unsig_num );
+}
+
+/* Octal type variations */
+echo "\n\n*** Output for octal type ***\n";
+echo "\n Input numbers variation array is:\n";
+print_r($int_numbers);
+
+foreach( $int_numbers as $octal_num )
+{
+ echo "\n";
+ printf( "%o", $octal_num );
+}
+
+/* Hexadecimal type variations */
+echo "\n\n*** Output for hexadecimal type ***\n";
+echo "\n Input numbers variation array is:\n";
+print_r($int_numbers);
+
+foreach( $int_numbers as $hexa_num )
+{
+ echo "\n";
+ printf( "%x", $hexa_num );
+}
+
+/* String type variations */
+echo "\n\n*** Output for string type ***\n";
+echo "\n Input Strings format variation array is:\n";
+print_r($string_variation);
+echo "\n Input strings variation array is:\n";
+print_r($strings);
+
+foreach( $string_variation as $string_var )
+{
+ foreach( $strings as $str )
+ {
+ echo "\n";
+ printf( $string_var, $str );
+ }
+}
+
+
+/* variations of %g type */
+$format_g = array("%g", "%.0g", "%+g", "%-g", "%-1.2g", "%+1.2g", "%G", "%.0G", "%+G", "%-G", "%-1.2G", "%+1.2G");
+
+echo "\n\n*** Output for '%g' type ***\n";
+echo "\n Input format variation array is:\n";
+print_r($format_g);
+
+foreach( $format_g as $formatg )
+{
+ printf("\n$formatg",123456);
+ printf("\n$formatg",-123456);
+}
+
+
+/* Some more typical cases */
+
+$tempnum = 12345;
+$tempstring = "abcdefghjklmnpqrstuvwxyz";
+
+echo"\n\n*** Output for '%%%.2f' as the format parameter ***\n";
+printf("%%%.2f",1.23456789e10);
+
+echo"\n\n*** Output for '%%' as the format parameter ***\n";
+printf("%%",1.23456789e10);
+
+echo"\n\n*** Output for precision value more than maximum ***\n";
+printf("%.988f",1.23456789e10);
+
+echo"\n\n*** Output for invalid width(-15) specifier ***\n";
+printf("%030.-15s", $tempstring);
+
+echo"\n\n*** Output for '%F' as the format parameter ***\n";
+printf("%F",1.23456789e10);
+
+echo"\n\n*** Output for '%X' as the format parameter ***\n";
+printf("%X",12);
+
+echo"\n\n*** Output with no format parameter ***\n";
+printf($tempnum);
+
+echo"\n\n*** Output for multiple format parameters ***\n";
+printf("%d %s %d\n", $tempnum, $tempstring, $tempnum);
+
+echo"\n\n*** Output for excess of mixed type arguments ***\n";
+printf("%s", $tempstring, $tempstring, $tempstring);
+
+echo"\n\n*** Output for string format parameter and integer type argument ***\n";
+printf("%s", $tempnum);
+
+echo"\n\n*** Output for integer format parameter and string type argument ***\n";
+printf("%d", $tempstring);
+
+
+?>
+--EXPECTF--
+*** Output for zero argument ***
+
+Warning: Wrong parameter count for printf() in %s on line %d
+
+*** Output for insufficient number of arguments ***
+
+Warning: printf(): Too few arguments in %s on line %d
+
+*** Output for scalar argument ***
+3
+*** Output for NULL as argument ***
+
+
+*** Output for float type ***
+
+ Input Float numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 0.32
+ [4] => -0.32
+ [5] => 3.4-3.4
+ [6] => 2.54
+ [7] => -2.54
+ [8] => 1.2345678E+99
+ [9] => -1.2345678E+99
+)
+
+
+Float Iteration 1
+0.000000
+1.000000
+-1.000000
+0.320000
+-0.320000
+3.400000
+2.540000
+-2.540000
+1234567%d.000000
+-1234567%d.000000
+
+Float Iteration 2
+0.000000
+1.000000
+-1.000000
+0.320000
+-0.320000
+3.400000
+2.540000
+-2.540000
+1234567%d.000000
+-1234567%d.000000
+
+Float Iteration 3
++0.000000
++1.000000
+-1.000000
++0.320000
+-0.320000
++3.400000
++2.540000
+-2.540000
++1234567%d.000000
+-1234567%d.000000
+
+Float Iteration 4
+ 0.00
+ 1.00
+ -1.00
+ 0.32
+ -0.32
+ 3.40
+ 2.54
+ -2.54
+1234567%d.00
+-1234567%d.00
+
+Float Iteration 5
+0.00
+1.00
+-1.00
+0.32
+-0.32
+3.40
+2.54
+-2.54
+1234567%d.00
+-1234567%d.00
+
+Float Iteration 6
+0000.00
+0001.00
+-001.00
+0000.32
+-000.32
+0003.40
+0002.54
+-002.54
+1234567%d.00
+-1234567%d.00
+
+Float Iteration 7
+0.00000
+1.00000
+-1.0000
+0.32000
+-0.3200
+3.40000
+2.54000
+-2.5400
+1234567%d.00
+-1234567%d.00
+
+Float Iteration 8
+###0.00
+###1.00
+##-1.00
+###0.32
+##-0.32
+###3.40
+###2.54
+##-2.54
+1234567%d.00
+-1234567%d.00
+
+*** Output for integer type ***
+
+ Input Integer numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 2.7
+ [4] => -2.7
+ [5] => 23333333
+ [6] => -23333333
+ [7] => 1234
+)
+
+
+Integer Iteration 1
+0
+1
+-1
+2
+-2
+23333333
+-23333333
+1234
+
+Integer Iteration 2
+0
+1
+-1
+2
+-2
+23333333
+-23333333
+1234
+
+Integer Iteration 3
++0
++1
+-1
++2
+-2
++23333333
+-23333333
++1234
+
+Integer Iteration 4
+ 0
+ 1
+ -1
+ 2
+ -2
+23333333
+-23333333
+ 1234
+
+Integer Iteration 5
+0
+1
+-1
+2
+-2
+23333333
+-23333333
+1234
+
+Integer Iteration 6
+0000000
+0000001
+-000001
+0000002
+-000002
+23333333
+-23333333
+0001234
+
+Integer Iteration 7
+0
+1
+-1
+2
+-2
+23333333
+-23333333
+1234
+
+Integer Iteration 8
+######0
+######1
+#####-1
+######2
+#####-2
+23333333
+-23333333
+###1234
+
+*** Output for binary type ***
+
+ Input numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 2.7
+ [4] => -2.7
+ [5] => 23333333
+ [6] => -23333333
+ [7] => 1234
+)
+
+0
+1
+11111111111111111111111111111111
+10
+11111111111111111111111111111110
+1011001000000100111010101
+11111110100110111111011000101011
+10011010010
+
+*** Output for char type ***
+
+ Input Characters variation array is:
+Array
+(
+ [0] => a
+ [1] => a
+ [2] => 67
+ [3] => -67
+ [4] => 99
+)
+
+
+
+C
+c
+
+*** Output for scientific type ***
+
+ Input numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 2.7
+ [4] => -2.7
+ [5] => 23333333
+ [6] => -23333333
+ [7] => 1234
+)
+
+0.000000e+0
+1.000000e+0
+-1.000000e+0
+2.700000e+0
+-2.700000e+0
+2.333333e+7
+-2.333333e+7
+1.234000e+3
+
+*** Output for unsigned integer type ***
+
+ Input Integer numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 2.7
+ [4] => -2.7
+ [5] => 23333333
+ [6] => -23333333
+ [7] => 1234
+)
+
+0
+1
+4294967295
+2
+4294967294
+23333333
+4271633963
+1234
+
+*** Output for octal type ***
+
+ Input numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 2.7
+ [4] => -2.7
+ [5] => 23333333
+ [6] => -23333333
+ [7] => 1234
+)
+
+0
+1
+37777777777
+2
+37777777776
+131004725
+37646773053
+2322
+
+*** Output for hexadecimal type ***
+
+ Input numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 2.7
+ [4] => -2.7
+ [5] => 23333333
+ [6] => -23333333
+ [7] => 1234
+)
+
+0
+1
+ffffffff
+2
+fffffffe
+16409d5
+fe9bf62b
+4d2
+
+*** Output for string type ***
+
+ Input Strings format variation array is:
+Array
+(
+ [0] => %5s
+ [1] => %-5s
+ [2] => %05s
+ [3] => %'#5s
+)
+
+ Input strings variation array is:
+Array
+(
+ [0] =>
+ [1] => abc
+ [2] => aaa
+)
+
+
+ abc
+ aaa
+
+abc
+aaa
+00000
+00abc
+00aaa
+#####
+##abc
+##aaa
+
+*** Output for '%g' type ***
+
+ Input format variation array is:
+Array
+(
+ [0] => %g
+ [1] => %.0g
+ [2] => %+g
+ [3] => %-g
+ [4] => %-1.2g
+ [5] => %+1.2g
+ [6] => %G
+ [7] => %.0G
+ [8] => %+G
+ [9] => %-G
+ [10] => %-1.2G
+ [11] => %+1.2G
+)
+
+123456
+-123456
+1.0e+5
+-1.0e+5
++123456
+-123456
+123456
+-123456
+120000
+-120000
++120000
+-120000
+123456
+-123456
+1.0E+5
+-1.0E+5
++123456
+-123456
+123456
+-123456
+120000
+-120000
++120000
+-120000
+
+*** Output for '%%%.2f' as the format parameter ***
+%12345678900.00
+
+*** Output for '%%' as the format parameter ***
+%
+
+*** Output for precision value more than maximum ***
+12345678900.0000000000000000000000000000000000000000
+
+*** Output for invalid width(-15) specifier ***
+15s
+
+*** Output for '%F' as the format parameter ***
+12345678900.000000
+
+*** Output for '%X' as the format parameter ***
+C
+
+*** Output with no format parameter ***
+12345
+
+*** Output for multiple format parameters ***
+12345 abcdefghjklmnpqrstuvwxyz 12345
+
+
+*** Output for excess of mixed type arguments ***
+abcdefghjklmnpqrstuvwxyz
+
+*** Output for string format parameter and integer type argument ***
+12345
+
+*** Output for integer format parameter and string type argument ***
+0
diff --git a/ext/standard/tests/strings/printf_64bit.phpt b/ext/standard/tests/strings/printf_64bit.phpt
new file mode 100755
index 000000000..01ba34182
--- /dev/null
+++ b/ext/standard/tests/strings/printf_64bit.phpt
@@ -0,0 +1,695 @@
+--TEST--
+Test printf() function (64bit)
+--SKIPIF--
+<?php
+if (!(PHP_INT_MAX > 2147483647)) {
+ die("skip 64bit test only");
+}
+?>
+--FILE--
+<?php
+
+/* Various input arrays for different format types */
+
+$float_variation = array( "%f", "%-f", "%+f", "%7.2f", "%-7.2f", "%07.2f", "%-07.2f", "%'#7.2f" );
+$float_numbers = array( 0, 1, -1, 0.32, -0.32, 3.4. -3.4, 2.54, -2.54, 1.2345678e99, -1.2345678e99 );
+
+$int_variation = array( "%d", "%-d", "%+d", "%7.2d", "%-7.2d", "%07.2d", "%-07.2d", "%'#7.2d" );
+$int_numbers = array( 0, 1, -1, 2.7, -2.7, 23333333, -23333333, "1234" );
+
+$char_variation = array( 'a', "a", 67, -67, 99 );
+
+$string_variation = array( "%5s", "%-5s", "%05s", "%'#5s" );
+$strings = array( NULL, "abc", 'aaa' );
+
+/* Checking warning messages */
+
+/* Zero argument */
+echo "\n*** Output for zero argument ***\n";
+printf();
+
+/* Number of arguments not matching as specified in format field */
+echo "\n*** Output for insufficient number of arguments ***\n";
+$string = "dingy%sflem%dwombat";
+$nbr = 5;
+$name = "voudras";
+printf("%d $string %s", $nbr, $name);
+
+
+/* Scalar argument */
+echo "\n*** Output for scalar argument ***\n";
+printf(3);
+
+/* NULL argument */
+echo "\n*** Output for NULL as argument ***\n";
+printf(NULL);
+
+
+/* Float type variations */
+
+$counter = 1;
+echo "\n\n*** Output for float type ***\n";
+echo "\n Input Float numbers variation array is:\n";
+print_r($float_numbers);
+
+foreach( $float_variation as $float_var )
+{
+ echo "\n\nFloat Iteration $counter";
+ foreach( $float_numbers as $float_num )
+ {
+ echo "\n";
+ printf( $float_var, $float_num );
+ }
+ $counter++;
+}
+
+
+/* Integer type variations */
+
+$counter = 1;
+echo "\n\n*** Output for integer type ***\n";
+echo "\n Input Integer numbers variation array is:\n";
+print_r($int_numbers);
+
+foreach( $int_variation as $int_var )
+{
+ echo "\n\nInteger Iteration $counter";
+ foreach( $int_numbers as $int_num )
+ {
+ echo "\n";
+ printf( $int_var, $int_num );
+ }
+ $counter++;
+}
+
+
+/* Binary type variations */
+
+echo "\n\n*** Output for binary type ***\n";
+echo "\n Input numbers variation array is:\n";
+print_r($int_numbers);
+
+ foreach( $int_numbers as $bin_num )
+ {
+ echo "\n";
+ printf( "%b", $bin_num );
+ }
+
+
+/* Chararter type variations */
+echo "\n\n*** Output for char type ***\n";
+echo "\n Input Characters variation array is:\n";
+print_r($char_variation);
+
+foreach( $char_variation as $char )
+{
+ echo "\n";
+ printf( "%c", $char );
+}
+
+/* Scientific type variations */
+echo "\n\n*** Output for scientific type ***\n";
+echo "\n Input numbers variation array is:\n";
+print_r($int_numbers);
+
+foreach( $int_numbers as $num )
+{
+ echo "\n";
+ printf( "%e", $num );
+}
+
+/* Unsigned Integer type variation */
+echo "\n\n*** Output for unsigned integer type ***\n";
+echo "\n Input Integer numbers variation array is:\n";
+print_r($int_numbers);
+
+foreach( $int_numbers as $unsig_num )
+{
+ echo "\n";
+ printf( "%u", $unsig_num );
+}
+
+/* Octal type variations */
+echo "\n\n*** Output for octal type ***\n";
+echo "\n Input numbers variation array is:\n";
+print_r($int_numbers);
+
+foreach( $int_numbers as $octal_num )
+{
+ echo "\n";
+ printf( "%o", $octal_num );
+}
+
+/* Hexadecimal type variations */
+echo "\n\n*** Output for hexadecimal type ***\n";
+echo "\n Input numbers variation array is:\n";
+print_r($int_numbers);
+
+foreach( $int_numbers as $hexa_num )
+{
+ echo "\n";
+ printf( "%x", $hexa_num );
+}
+
+/* String type variations */
+echo "\n\n*** Output for string type ***\n";
+echo "\n Input Strings format variation array is:\n";
+print_r($string_variation);
+echo "\n Input strings variation array is:\n";
+print_r($strings);
+
+foreach( $string_variation as $string_var )
+{
+ foreach( $strings as $str )
+ {
+ echo "\n";
+ printf( $string_var, $str );
+ }
+}
+
+
+/* variations of %g type */
+$format_g = array("%g", "%.0g", "%+g", "%-g", "%-1.2g", "%+1.2g", "%G", "%.0G", "%+G", "%-G", "%-1.2G", "%+1.2G");
+
+echo "\n\n*** Output for '%g' type ***\n";
+echo "\n Input format variation array is:\n";
+print_r($format_g);
+
+foreach( $format_g as $formatg )
+{
+ printf("\n$formatg",123456);
+ printf("\n$formatg",-123456);
+}
+
+
+/* Some more typical cases */
+
+$tempnum = 12345;
+$tempstring = "abcdefghjklmnpqrstuvwxyz";
+
+echo"\n\n*** Output for '%%%.2f' as the format parameter ***\n";
+printf("%%%.2f",1.23456789e10);
+
+echo"\n\n*** Output for '%%' as the format parameter ***\n";
+printf("%%",1.23456789e10);
+
+echo"\n\n*** Output for precision value more than maximum ***\n";
+printf("%.988f",1.23456789e10);
+
+echo"\n\n*** Output for invalid width(-15) specifier ***\n";
+printf("%030.-15s", $tempstring);
+
+echo"\n\n*** Output for '%F' as the format parameter ***\n";
+printf("%F",1.23456789e10);
+
+echo"\n\n*** Output for '%X' as the format parameter ***\n";
+printf("%X",12);
+
+echo"\n\n*** Output with no format parameter ***\n";
+printf($tempnum);
+
+echo"\n\n*** Output for multiple format parameters ***\n";
+printf("%d %s %d\n", $tempnum, $tempstring, $tempnum);
+
+echo"\n\n*** Output for excess of mixed type arguments ***\n";
+printf("%s", $tempstring, $tempstring, $tempstring);
+
+echo"\n\n*** Output for string format parameter and integer type argument ***\n";
+printf("%s", $tempnum);
+
+echo"\n\n*** Output for integer format parameter and string type argument ***\n";
+printf("%d", $tempstring);
+
+
+?>
+--EXPECTF--
+*** Output for zero argument ***
+
+Warning: Wrong parameter count for printf() in %s on line %d
+
+*** Output for insufficient number of arguments ***
+
+Warning: printf(): Too few arguments in %s on line %d
+
+*** Output for scalar argument ***
+3
+*** Output for NULL as argument ***
+
+
+*** Output for float type ***
+
+ Input Float numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 0.32
+ [4] => -0.32
+ [5] => 3.4-3.4
+ [6] => 2.54
+ [7] => -2.54
+ [8] => 1.2345678E+99
+ [9] => -1.2345678E+99
+)
+
+
+Float Iteration 1
+0.000000
+1.000000
+-1.000000
+0.320000
+-0.320000
+3.400000
+2.540000
+-2.540000
+1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.000000
+-1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.000000
+
+Float Iteration 2
+0.000000
+1.000000
+-1.000000
+0.320000
+-0.320000
+3.400000
+2.540000
+-2.540000
+1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.000000
+-1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.000000
+
+Float Iteration 3
++0.000000
++1.000000
+-1.000000
++0.320000
+-0.320000
++3.400000
++2.540000
+-2.540000
++1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.000000
+-1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.000000
+
+Float Iteration 4
+ 0.00
+ 1.00
+ -1.00
+ 0.32
+ -0.32
+ 3.40
+ 2.54
+ -2.54
+1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.00
+-1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.00
+
+Float Iteration 5
+0.00
+1.00
+-1.00
+0.32
+-0.32
+3.40
+2.54
+-2.54
+1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.00
+-1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.00
+
+Float Iteration 6
+0000.00
+0001.00
+-001.00
+0000.32
+-000.32
+0003.40
+0002.54
+-002.54
+1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.00
+-1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.00
+
+Float Iteration 7
+0.00000
+1.00000
+-1.0000
+0.32000
+-0.3200
+3.40000
+2.54000
+-2.5400
+1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.00
+-1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.00
+
+Float Iteration 8
+###0.00
+###1.00
+##-1.00
+###0.32
+##-0.32
+###3.40
+###2.54
+##-2.54
+1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.00
+-1234567799999999974395005011934353453808157274826416694779123657996479008398428960266851879135215616.00
+
+*** Output for integer type ***
+
+ Input Integer numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 2.7
+ [4] => -2.7
+ [5] => 23333333
+ [6] => -23333333
+ [7] => 1234
+)
+
+
+Integer Iteration 1
+0
+1
+-1
+2
+-2
+23333333
+-23333333
+1234
+
+Integer Iteration 2
+0
+1
+-1
+2
+-2
+23333333
+-23333333
+1234
+
+Integer Iteration 3
++0
++1
+-1
++2
+-2
++23333333
+-23333333
++1234
+
+Integer Iteration 4
+ 0
+ 1
+ -1
+ 2
+ -2
+23333333
+-23333333
+ 1234
+
+Integer Iteration 5
+0
+1
+-1
+2
+-2
+23333333
+-23333333
+1234
+
+Integer Iteration 6
+0000000
+0000001
+-000001
+0000002
+-000002
+23333333
+-23333333
+0001234
+
+Integer Iteration 7
+0
+1
+-1
+2
+-2
+23333333
+-23333333
+1234
+
+Integer Iteration 8
+######0
+######1
+#####-1
+######2
+#####-2
+23333333
+-23333333
+###1234
+
+*** Output for binary type ***
+
+ Input numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 2.7
+ [4] => -2.7
+ [5] => 23333333
+ [6] => -23333333
+ [7] => 1234
+)
+
+0
+1
+1111111111111111111111111111111111111111111111111111111111111111
+10
+1111111111111111111111111111111111111111111111111111111111111110
+1011001000000100111010101
+1111111111111111111111111111111111111110100110111111011000101011
+10011010010
+
+*** Output for char type ***
+
+ Input Characters variation array is:
+Array
+(
+ [0] => a
+ [1] => a
+ [2] => 67
+ [3] => -67
+ [4] => 99
+)
+
+
+
+C
+c
+
+*** Output for scientific type ***
+
+ Input numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 2.7
+ [4] => -2.7
+ [5] => 23333333
+ [6] => -23333333
+ [7] => 1234
+)
+
+0.000000e+0
+1.000000e+0
+-1.000000e+0
+2.700000e+0
+-2.700000e+0
+2.333333e+7
+-2.333333e+7
+1.234000e+3
+
+*** Output for unsigned integer type ***
+
+ Input Integer numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 2.7
+ [4] => -2.7
+ [5] => 23333333
+ [6] => -23333333
+ [7] => 1234
+)
+
+0
+1
+4294967295
+2
+4294967294
+23333333
+4271633963
+1234
+
+*** Output for octal type ***
+
+ Input numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 2.7
+ [4] => -2.7
+ [5] => 23333333
+ [6] => -23333333
+ [7] => 1234
+)
+
+0
+1
+1777777777777777777777
+2
+1777777777777777777776
+131004725
+1777777777777646773053
+2322
+
+*** Output for hexadecimal type ***
+
+ Input numbers variation array is:
+Array
+(
+ [0] => 0
+ [1] => 1
+ [2] => -1
+ [3] => 2.7
+ [4] => -2.7
+ [5] => 23333333
+ [6] => -23333333
+ [7] => 1234
+)
+
+0
+1
+ffffffffffffffff
+2
+fffffffffffffffe
+16409d5
+fffffffffe9bf62b
+4d2
+
+*** Output for string type ***
+
+ Input Strings format variation array is:
+Array
+(
+ [0] => %5s
+ [1] => %-5s
+ [2] => %05s
+ [3] => %'#5s
+)
+
+ Input strings variation array is:
+Array
+(
+ [0] =>
+ [1] => abc
+ [2] => aaa
+)
+
+
+ abc
+ aaa
+
+abc
+aaa
+00000
+00abc
+00aaa
+#####
+##abc
+##aaa
+
+*** Output for '%g' type ***
+
+ Input format variation array is:
+Array
+(
+ [0] => %g
+ [1] => %.0g
+ [2] => %+g
+ [3] => %-g
+ [4] => %-1.2g
+ [5] => %+1.2g
+ [6] => %G
+ [7] => %.0G
+ [8] => %+G
+ [9] => %-G
+ [10] => %-1.2G
+ [11] => %+1.2G
+)
+
+123456
+-123456
+1.0e+5
+-1.0e+5
++123456
+-123456
+123456
+-123456
+120000
+-120000
++120000
+-120000
+123456
+-123456
+1.0E+5
+-1.0E+5
++123456
+-123456
+123456
+-123456
+120000
+-120000
++120000
+-120000
+
+*** Output for '%%%.2f' as the format parameter ***
+%12345678900.00
+
+*** Output for '%%' as the format parameter ***
+%
+
+*** Output for precision value more than maximum ***
+12345678900.0000000000000000000000000000000000000000
+
+*** Output for invalid width(-15) specifier ***
+15s
+
+*** Output for '%F' as the format parameter ***
+12345678900.000000
+
+*** Output for '%X' as the format parameter ***
+C
+
+*** Output with no format parameter ***
+12345
+
+*** Output for multiple format parameters ***
+12345 abcdefghjklmnpqrstuvwxyz 12345
+
+
+*** Output for excess of mixed type arguments ***
+abcdefghjklmnpqrstuvwxyz
+
+*** Output for string format parameter and integer type argument ***
+12345
+
+*** Output for integer format parameter and string type argument ***
+0
diff --git a/ext/standard/tests/strings/rtrim.phpt b/ext/standard/tests/strings/rtrim.phpt
new file mode 100644
index 000000000..329ead420
--- /dev/null
+++ b/ext/standard/tests/strings/rtrim.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/sha1.phpt b/ext/standard/tests/strings/sha1.phpt
index c405eedde..ed8f47457 100644
--- a/ext/standard/tests/strings/sha1.phpt
+++ b/ext/standard/tests/strings/sha1.phpt
@@ -2,13 +2,50 @@
sha1() with ASCII output
--FILE--
<?php
-echo sha1("abc")."\n";
-echo sha1("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")."\n";
-echo sha1("a")."\n";
-echo sha1("0123456701234567012345670123456701234567012345670123456701234567")."\n";
+
+$filename = dirname(__FILE__)."/sha1.dat";
+$a = array(
+ "abc",
+ "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
+ "a",
+ "0123456701234567012345670123456701234567012345670123456701234567",
+ ""
+);
+
+foreach ($a as $str) {
+ var_dump($val1 = sha1($str));
+ file_put_contents($filename, $str);
+ var_dump($val2 = sha1_file($filename));
+ var_dump($val1 === $val2);
+}
+
+var_dump(sha1($str, true));
+var_dump(sha1_file($filename, true));
+
+@unlink($filename);
+
+sha1_file($filename);
+
+echo "Done\n";
?>
---EXPECT--
-a9993e364706816aba3e25717850c26c9cd0d89d
-84983e441c3bd26ebaae4aa1f95129e5e54670f1
-86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
-e0c094e867ef46c350ef54a7f59dd60bed92ae83
+--EXPECTF--
+string(40) "a9993e364706816aba3e25717850c26c9cd0d89d"
+string(40) "a9993e364706816aba3e25717850c26c9cd0d89d"
+bool(true)
+string(40) "84983e441c3bd26ebaae4aa1f95129e5e54670f1"
+string(40) "84983e441c3bd26ebaae4aa1f95129e5e54670f1"
+bool(true)
+string(40) "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8"
+string(40) "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8"
+bool(true)
+string(40) "e0c094e867ef46c350ef54a7f59dd60bed92ae83"
+string(40) "e0c094e867ef46c350ef54a7f59dd60bed92ae83"
+bool(true)
+string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709"
+string(40) "da39a3ee5e6b4b0d3255bfef95601890afd80709"
+bool(true)
+string(20) "%s"
+string(20) "%s"
+
+Warning: sha1_file(%ssha1.dat): failed to open stream: No such file or directory in %s on line %d
+Done
diff --git a/ext/standard/tests/strings/soundex.phpt b/ext/standard/tests/strings/soundex.phpt
new file mode 100644
index 000000000..55769ad57
--- /dev/null
+++ b/ext/standard/tests/strings/soundex.phpt
@@ -0,0 +1,55 @@
+--TEST--
+soundex() tests
+--FILE--
+<?php
+
+var_dump(soundex(""));
+var_dump(soundex(-1));
+var_dump(soundex(array()));
+
+$array = array(
+"From",
+"that",
+"time",
+"on",
+"Sam",
+"thought",
+"that",
+"he",
+"sensed",
+"a",
+"change",
+"in",
+"Gollum",
+"again.",
+"He was more fawning and would-be friendly; but Sam surprised some strange looks in his eyes at times, especially towards Frodo."
+);
+
+foreach ($array as $str) {
+ var_dump(soundex($str));
+}
+
+echo "Done\n";
+?>
+--EXPECTF--
+bool(false)
+string(4) "0000"
+
+Warning: soundex() expects parameter 1 to be string, array given in %s on line %d
+NULL
+string(4) "F650"
+string(4) "T300"
+string(4) "T500"
+string(4) "O500"
+string(4) "S500"
+string(4) "T230"
+string(4) "T300"
+string(4) "H000"
+string(4) "S523"
+string(4) "A000"
+string(4) "C520"
+string(4) "I500"
+string(4) "G450"
+string(4) "A250"
+string(4) "H256"
+Done
diff --git a/ext/standard/tests/strings/sprintf_f.phpt b/ext/standard/tests/strings/sprintf_f.phpt
index 6135270d2..6cba6d10b 100755
--- a/ext/standard/tests/strings/sprintf_f.phpt
+++ b/ext/standard/tests/strings/sprintf_f.phpt
@@ -37,4 +37,4 @@ string(7) "-5.60 "
string(7) "-005.60"
string(7) "-5.6000"
-string(105) "12345678%d00000000000000000000000000000000000000000000000000.0000" \ No newline at end of file
+string(105) "1234567%d.0000"
diff --git a/ext/standard/tests/strings/sprintf_f_2.phpt b/ext/standard/tests/strings/sprintf_f_2.phpt
new file mode 100755
index 000000000..d6006356f
--- /dev/null
+++ b/ext/standard/tests/strings/sprintf_f_2.phpt
@@ -0,0 +1,114 @@
+--TEST--
+sprintf %f #2
+--FILE--
+<?php
+var_dump(sprintf("%.3F", 100.426));
+var_dump(sprintf("%.2F", 100.426));
+var_dump(sprintf("%d", 100.426));
+var_dump(sprintf("%d", 100.9));
+var_dump(sprintf("%o", 100.426));
+var_dump(sprintf("%o", 100.9));
+
+/* copy & paste from the docs */
+
+/* example#1: Argument swapping */
+$num = 100.1;
+$location = "world";
+
+$format = 'There are %d monkeys in the %s';
+var_dump(sprintf($format, $num, $location));
+
+/* example#2: Argument swapping */
+$format = 'The %s contains %d monkeys';
+var_dump(sprintf($format, $num, $location));
+
+/* example#3: Argument swapping */
+$format = 'The %2$s contains %1$d monkeys';
+var_dump(sprintf($format, $num, $location));
+
+/* example#4: Argument swapping */
+$format = 'The %2$s contains %1$d monkeys.
+ That\'s a nice %2$s full of %1$d monkeys.';
+var_dump(sprintf($format, $num, $location));
+
+/* example#5: various examples */
+$n = 43951789;
+$u = -43951789;
+$c = 65; // ASCII 65 is 'A'
+
+// notice the double %%, this prints a literal '%' character
+var_dump(sprintf("%%b = '%b'", $n)); // binary representation
+var_dump(sprintf("%%c = '%c'", $c)); // print the ascii character, same as chr() function
+var_dump(sprintf("%%d = '%d'", $n)); // standard integer representation
+var_dump(sprintf("%%e = '%e'", $n)); // scientific notation
+var_dump(sprintf("%%u = '%u'", $n)); // unsigned integer representation of a positive integer
+var_dump(sprintf("%%u = '%u'", $u)); // unsigned integer representation of a negative integer
+var_dump(sprintf("%%f = '%f'", $n)); // floating point representation
+var_dump(sprintf("%%o = '%o'", $n)); // octal representation
+var_dump(sprintf("%%s = '%s'", $n)); // string representation
+var_dump(sprintf("%%x = '%x'", $n)); // hexadecimal representation (lower-case)
+var_dump(sprintf("%%X = '%X'", $n)); // hexadecimal representation (upper-case)
+
+var_dump(sprintf("%%+d = '%+d'", $n)); // sign specifier on a positive integer
+var_dump(sprintf("%%+d = '%+d'", $u)); // sign specifier on a negative integer
+
+
+/* example#6: string specifiers */
+$s = 'monkey';
+$t = 'many monkeys';
+
+var_dump(sprintf("[%s]", $s)); // standard string output
+var_dump(sprintf("[%10s]", $s)); // right-justification with spaces
+var_dump(sprintf("[%-10s]", $s)); // left-justification with spaces
+var_dump(sprintf("[%010s]", $s)); // zero-padding works on strings too
+var_dump(sprintf("[%'#10s]", $s)); // use the custom padding character '#'
+var_dump(sprintf("[%10.10s]", $t)); // left-justification but with a cutoff of 10 characters
+
+/* example#7: zero-padded integers */
+var_dump(sprintf("%04d-%02d-%02d", 2006, 12, 18));
+
+/* example#8: formatting currency */
+$money1 = 68.75;
+$money2 = 54.35;
+$money = $money1 + $money2;
+var_dump(sprintf("%01.2f", $money)); // output "123.10"
+
+/* example#9: scientific notation */
+$number = 362525200;
+
+var_dump(sprintf("%.3e", $number)); // outputs 3.63e+8
+?>
+--EXPECT--
+string(7) "100.426"
+string(6) "100.43"
+string(3) "100"
+string(3) "100"
+string(3) "144"
+string(3) "144"
+string(34) "There are 100 monkeys in the world"
+string(28) "The 100.1 contains 0 monkeys"
+string(30) "The world contains 100 monkeys"
+string(76) "The world contains 100 monkeys.
+ That's a nice world full of 100 monkeys."
+string(33) "%b = '10100111101010011010101101'"
+string(8) "%c = 'A'"
+string(15) "%d = '43951789'"
+string(18) "%e = '4.395179e+7'"
+string(15) "%u = '43951789'"
+string(17) "%u = '4251015507'"
+string(22) "%f = '43951789.000000'"
+string(16) "%o = '247523255'"
+string(15) "%s = '43951789'"
+string(14) "%x = '29ea6ad'"
+string(14) "%X = '29EA6AD'"
+string(17) "%+d = '+43951789'"
+string(17) "%+d = '-43951789'"
+string(8) "[monkey]"
+string(12) "[ monkey]"
+string(12) "[monkey ]"
+string(12) "[0000monkey]"
+string(12) "[####monkey]"
+string(12) "[many monke]"
+string(10) "2006-12-18"
+string(6) "123.10"
+string(8) "3.625e+8"
diff --git a/ext/standard/tests/strings/sprintf_f_3.phpt b/ext/standard/tests/strings/sprintf_f_3.phpt
new file mode 100755
index 000000000..0cf123998
--- /dev/null
+++ b/ext/standard/tests/strings/sprintf_f_3.phpt
@@ -0,0 +1,23 @@
+--TEST--
+sprintf %f #3
+--SKIPIF--
+<?php if(false == setlocale(LC_NUMERIC, "is_IS", "is_IS.UTF-8")) print "skip icelandic locale not supported"; ?>
+--FILE--
+<?php
+setlocale(LC_NUMERIC, "is_IS", "is_IS.UTF-8");
+var_dump(sprintf("%.3f", 100.426));
+var_dump(sprintf("%.2f", 100.426));
+var_dump(sprintf("%f'", 100.426));
+
+$money1 = 68.75;
+$money2 = 54.35;
+$money = $money1 + $money2;
+var_dump(sprintf("%01.2f", $money));
+var_dump(sprintf("%.3e", $money));
+?>
+--EXPECT--
+string(7) "100,426"
+string(6) "100,43"
+string(11) "100,426000'"
+string(6) "123,10"
+string(8) "1.231e+2"
diff --git a/ext/standard/tests/strings/str_ireplace.phpt b/ext/standard/tests/strings/str_ireplace.phpt
new file mode 100644
index 000000000..4d4fee8f9
--- /dev/null
+++ b/ext/standard/tests/strings/str_ireplace.phpt
@@ -0,0 +1,101 @@
+--TEST--
+str_ireplace() tests
+--FILE--
+<?php
+
+var_dump(str_ireplace());
+var_dump(str_ireplace(""));
+var_dump(str_ireplace("", ""));
+var_dump(str_ireplace("", "", ""));
+
+var_dump(str_ireplace("tt", "a", "ttttTttttttttTT"));
+var_dump(str_ireplace("tt", "a", "ttttTttttttttTT", $count));
+var_dump($count);
+
+var_dump(str_ireplace("tt", "aa", "ttttTttttttttTT"));
+var_dump(str_ireplace("tt", "aa", "ttttTttttttttTT", $count));
+var_dump($count);
+
+var_dump(str_ireplace("tt", "aaa", "ttttTttttttttTT"));
+var_dump(str_ireplace("tt", "aaa", "ttttTttttttttTT", $count));
+var_dump($count);
+
+var_dump(str_ireplace("tt", "aaa", "ttttTttttttttTT"));
+var_dump(str_ireplace("tt", "aaa", "ttttTttttttttTT", $count));
+var_dump($count);
+
+var_dump(str_ireplace(array("tt", "tt"), "aaa", "ttttTttttttttTT"));
+var_dump(str_ireplace(array("tt", "tt"), array("aaa"), "ttttTttttttttTT"));
+var_dump(str_ireplace(array("tt", "y"), array("aaa", "bbb"), "ttttTttttttttTT"));
+
+var_dump(str_ireplace(array("tt", "tt"), "aaa", "ttttTttttttttTT"));
+var_dump(str_ireplace(array("tt", "tt"), array("aaa"), "ttttTttttttttTT"));
+var_dump(str_ireplace(array("tt", "y"), array("aaa", "bbb"), "ttttTttttttttTT"));
+
+var_dump(str_ireplace(array("tt", "y"), array("aaa", "bbb"), array("ttttTttttttttTT", "aayyaayasdayYahsdYYY")));
+var_dump(str_ireplace(array("tt", "y"), array("aaa", "bbb"), array("key"=>"ttttTttttttttTT", "test"=>"aayyaayasdayYahsdYYY")));
+var_dump(str_ireplace(array("t"=>"tt", "y"=>"y"), array("a"=>"aaa", "b"=>"bbb"), array("key"=>"ttttTttttttttTT", "test"=>"aayyaayasdayYahsdYYY")));
+
+/* separate testcase for str_ireplace() off-by-one */
+
+$Data = "Change tracking and management software designed to watch
+ for abnormal system behavior.\nSuggest features, report bugs, or ask
+ questions here.";
+var_dump($Data = str_ireplace("\r\n", "<br>", $Data));
+var_dump($Data = str_ireplace("\n", "<br>", $Data));
+
+
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: Wrong parameter count for str_ireplace() in %s on line %d
+NULL
+
+Warning: Wrong parameter count for str_ireplace() in %s on line %d
+NULL
+
+Warning: Wrong parameter count for str_ireplace() in %s on line %d
+NULL
+string(0) ""
+string(8) "aaaaaaaT"
+string(8) "aaaaaaaT"
+int(7)
+string(15) "aaaaaaaaaaaaaaT"
+string(15) "aaaaaaaaaaaaaaT"
+int(7)
+string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+int(7)
+string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+int(7)
+string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+array(2) {
+ [0]=>
+ string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+ [1]=>
+ string(36) "aabbbbbbaabbbasdabbbbbbahsdbbbbbbbbb"
+}
+array(2) {
+ ["key"]=>
+ string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+ ["test"]=>
+ string(36) "aabbbbbbaabbbasdabbbbbbahsdbbbbbbbbb"
+}
+array(2) {
+ ["key"]=>
+ string(22) "aaaaaaaaaaaaaaaaaaaaaT"
+ ["test"]=>
+ string(36) "aabbbbbbaabbbasdabbbbbbahsdbbbbbbbbb"
+}
+string(143) "Change tracking and management software designed to watch
+ for abnormal system behavior.
+Suggest features, report bugs, or ask
+ questions here."
+string(152) "Change tracking and management software designed to watch<br> for abnormal system behavior.<br>Suggest features, report bugs, or ask<br> questions here."
+Done
diff --git a/ext/standard/tests/strings/str_pad.phpt b/ext/standard/tests/strings/str_pad.phpt
new file mode 100644
index 000000000..d6111b034
--- /dev/null
+++ b/ext/standard/tests/strings/str_pad.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/strcasecmp.phpt b/ext/standard/tests/strings/strcasecmp.phpt
new file mode 100644
index 000000000..ee9799864
--- /dev/null
+++ b/ext/standard/tests/strings/strcasecmp.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/strcmp.phpt b/ext/standard/tests/strings/strcmp.phpt
new file mode 100644
index 000000000..b27da6c37
--- /dev/null
+++ b/ext/standard/tests/strings/strcmp.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/stristr.phpt b/ext/standard/tests/strings/stristr.phpt
new file mode 100644
index 000000000..5c617a20d
--- /dev/null
+++ b/ext/standard/tests/strings/stristr.phpt
@@ -0,0 +1,43 @@
+--TEST--
+stristr() function
+--FILE--
+<?php
+ var_dump(stristr());
+ var_dump(stristr(array(), ""));
+ var_dump(stristr("", array()));
+ var_dump(stristr(array(), array()));
+ var_dump(stristr("tEsT sTrInG", "tEsT"));
+ var_dump(stristr("tEsT sTrInG", "stRiNg"));
+ var_dump(stristr("tEsT sTrInG", "stRiN"));
+ var_dump(stristr("tEsT sTrInG", "t S"));
+ var_dump(stristr("tEsT sTrInG", "g"));
+ var_dump(md5(stristr("te".chr(0)."st", chr(0))));
+ var_dump(@stristr("", ""));
+ var_dump(@stristr("a", ""));
+ var_dump(@stristr("", "a"));
+ var_dump(md5(@stristr("\\\\a\\", "\\a")));
+ var_dump(stristr("tEsT sTrInG", " "));
+?>
+--EXPECTF--
+Warning: Wrong parameter count for stristr() in %s on line %d
+NULL
+
+Notice: Array to string conversion in %s on line %d
+
+Warning: stristr(): Empty delimiter. in %s on line %d
+bool(false)
+bool(false)
+
+Notice: Array to string conversion in %s on line %d
+bool(false)
+string(11) "tEsT sTrInG"
+string(6) "sTrInG"
+string(6) "sTrInG"
+string(8) "T sTrInG"
+string(1) "G"
+string(32) "7272696018bdeb2c9a3f8d01fc2a9273"
+bool(false)
+bool(false)
+bool(false)
+string(32) "6ec19f52f0766c463f3bb240f4396913"
+string(7) " sTrInG"
diff --git a/ext/standard/tests/strings/strlen.phpt b/ext/standard/tests/strings/strlen.phpt
new file mode 100644
index 000000000..41529b39f
--- /dev/null
+++ b/ext/standard/tests/strings/strlen.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/substr_compare.phpt b/ext/standard/tests/strings/substr_compare.phpt
index 594aed173..66a82a878 100644
--- a/ext/standard/tests/strings/substr_compare.phpt
+++ b/ext/standard/tests/strings/substr_compare.phpt
@@ -24,7 +24,7 @@ int(0)
int(1)
int(-1)
-Warning: substr_compare(): The start position cannot exceed initial string length in %s on line %d
+Warning: substr_compare(): The length cannot exceed initial string length in %s on line %d
bool(false)
Warning: substr_compare() expects parameter 5 to be boolean, object given in %s on line %d
diff --git a/ext/standard/tests/strings/ucfirst.phpt b/ext/standard/tests/strings/ucfirst.phpt
new file mode 100644
index 000000000..eebc4cc9c
--- /dev/null
+++ b/ext/standard/tests/strings/ucfirst.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/uuencode.phpt b/ext/standard/tests/strings/uuencode.phpt
new file mode 100644
index 000000000..9c77a5072
--- /dev/null
+++ b/ext/standard/tests/strings/uuencode.phpt
@@ -0,0 +1,40 @@
+--TEST--
+uuencode family tests
+--FILE--
+<?php
+
+var_dump(convert_uuencode(array()));
+var_dump(convert_uudecode(array()));
+
+var_dump(convert_uuencode(""));
+var_dump(convert_uudecode(""));
+var_dump($enc = convert_uuencode("~!@#$%^&*()_}{POIUYTREWQQSDFGHJKL:<MNBVCXZ"));
+var_dump(convert_uudecode("!@#$%^YUGFDFGHJKLUYTFBNMLOYT"));
+var_dump(convert_uudecode($enc));
+var_dump($enc = convert_uuencode("not very sophisticated"));
+var_dump(convert_uudecode($enc));
+var_dump(convert_uudecode(substr($enc, 0, -10)));
+
+echo "Done\n";
+?>
+--EXPECTF--
+Warning: convert_uuencode() expects parameter 1 to be string, array given in %s on line %d
+bool(false)
+
+Warning: convert_uudecode() expects parameter 1 to be string, array given in %s on line %d
+bool(false)
+bool(false)
+bool(false)
+string(60) "J?B%`(R0E7B8J*"E??7M03TE5651215=145-$1D=(2DM,.CQ-3D)60UA:
+`
+"
+string(1) "%s"
+string(42) "~!@#$%^&*()_}{POIUYTREWQQSDFGHJKL:<MNBVCXZ"
+string(36) "6;F]T('9E<GD@<V]P:&ES=&EC871E9```
+`
+"
+string(22) "not very sophisticated"
+
+Warning: convert_uudecode(): The given parameter is not a valid uuencoded string. in %s on line %d
+bool(false)
+Done