\nB"); VS(quotemeta(". \\ + * ? [ ^ ] ( $ )"), "\\. \\\\ \\+ \\* \\? \\[ \\^ \\] \\( \\$ \\)"); VS(strlen(str_shuffle("ABC")), 3); VS(strrev("ABC"), "CBA"); VS(strtolower("ABC"), "abc"); VS(strtoupper("abc"), "ABC"); VS(ucfirst("abc"), "Abc"); VS(lcfirst("ABC"), "aBC"); VS(ucwords("abc def"), "Abc Def"); $text = "

Test paragraph.

". "Other text"; VS(strip_tags($text), "Test paragraph. Other text"); VS(strip_tags($text, "

"), "

Test paragraph.

Other text"); VS(trim(" abc "), "abc"); VS(ltrim(" abc "), "abc "); VS(rtrim(" abc "), " abc"); VS(chop(" abc "), " abc"); { $metric = "create stuff"; $pieces = explode(" ", $metric, 1); VS(count($pieces), 1); VS($pieces[0], "create stuff"); } { $metric = "create stuff"; $pieces = explode(" ", $metric, 0); VS(count($pieces), 1); VS($pieces[0], "create stuff"); } { $pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); VS($pieces[0], "piece1"); VS($pieces[1], "piece2"); } { $str = "one|two|three|four"; $ret = explode("|", $str, 2); VERIFY(count($ret) == 2); VS($ret[0], "one"); VS($ret[1], "two|three|four"); } { $str = "one|two|three|four"; $ret = explode("|", $str, -1); VERIFY(count($ret) == 3); VS($ret[0], "one"); VS($ret[1], "two"); VS($ret[2], "three"); } { $str = "ab"; $ret = explode("b", $str); VS($ret[0], "a"); VS($ret[1], ""); } { $str = "b"; $ret = explode("b", $str); VS($ret[0], ""); VS($ret[1], ""); } { $str = "bb"; $ret = explode("b", $str); VS($ret[0], ""); VS($ret[1], ""); VS($ret[2], ""); } { $str = ""; $ret = explode("b", $str); VS($ret[0], ""); } { $arr = array("lastname", "email", "phone"); VS(implode(",", $arr), "lastname,email,phone"); } { $arr = array("lastname", "", "phone"); VS(implode(",", $arr), "lastname,,phone"); } { $arr = array("", "email", "phone"); VS(implode(",", $arr), ",email,phone"); } { $arr = array("", "", ""); VS(implode(",", $arr), ",,"); } { $arr = array(); VS(implode(",", $arr), ""); } $arr = array("lastname", "email", "phone"); VS(join(",", $arr), "lastname,email,phone"); $str = "Hello Friend"; $arr1 = str_split($str); VERIFY(count($arr1) == strlen($str)); VS($arr1[0], "H"); VS($arr1[1], "e"); $arr2 = str_split($str, 3); VERIFY(count($arr2) == 4); VS($arr2[0], "Hel"); VS($arr2[1], "lo "); // TODO(#2512685): this behaves differently in the interpreter vs. jit // $ret = chunk_split("ABCD", 2); // VS($ret, "AB\r\nCD\r\n"); $s = "This is\tan "; $tok = strtok($s, " \n\t"); while ($tok) { $tokens[] = $tok; $tok = strtok(" \n\t"); } VS($tokens, array("This", "is", "an")); { VS(str_replace("%body%", "black", ""), ""); } { $vowels[] = "a"; $vowels[] = "e"; $vowels[] = "i"; $vowels[] = "o"; $vowels[] = "u"; $vowels[] = "A"; $vowels[] = "E"; $vowels[] = "I"; $vowels[] = "O"; $vowels[] = "U"; VS(str_replace($vowels, "", "Hello World of PHP"), "Hll Wrld f PHP"); } { $phrase = "You should eat fruits, vegetables, and fiber every day."; $healthy = array("fruits", "vegetables", "fiber"); $yummy = array("pizza", "beer", "ice cream"); VS(str_replace($healthy, $yummy, $phrase), "You should eat pizza, beer, and ice cream every day."); } { $str = str_replace("ll", "", "good golly miss molly!", $count); VS($count, 2); } { $letters = array("a", "p"); $fruit = array("apple", "pear"); $text = "a p"; VS(str_replace($letters, $fruit, $text), "apearpearle pear"); } VS(str_ireplace("%body%", "black", ""), ""); VS(str_ireplace("%body%", "Black", ""), ""); $var = "ABCDEFGH:/MNRPQR/"; VS(substr_replace($var, "bob", 0), "bob"); VS(substr_replace($var, "bob", 0, strlen($var)), "bob"); VS(substr_replace($var, "bob", 0, 0), "bobABCDEFGH:/MNRPQR/"); VS(substr_replace($var, "bob", 10, -1), "ABCDEFGH:/bob/"); VS(substr_replace($var, "bob", -7, -1), "ABCDEFGH:/bob/"); VS(substr_replace($var, "", 10, -1), "ABCDEFGH://"); VS(substr("abcdef", 1), "bcdef"); VS(substr("abcdef", 1, 3), "bcd"); VS(substr("abcdef", 0, 4), "abcd"); VS(substr("abcdef", 0, 8), "abcdef"); VS(substr("abcdef", -1, 1), "f"); VS(substr("abcdef", 6), false); VS(substr("abcdef", 3, 0), ""); $input = "Alien"; VS(str_pad($input, 10), "Alien "); VS(str_pad($input, 10, "-=", STR_PAD_LEFT), "-=-=-Alien"); VS(str_pad($input, 10, "_", STR_PAD_BOTH), "__Alien___"); VS(str_pad($input, 6 , "___"), "Alien_"); VS(str_pad($input, 6 , "\0"), "Alien\0"); VS(str_repeat("-=", 10), "-=-=-=-=-=-=-=-=-=-="); { $text = "The quick brown fox jumped over the lazy dog."; VS(wordwrap($text, 20, "
\n"), "The quick brown fox
\njumped over the lazy
\ndog."); } { $text = "A very long woooooooooooord."; VS(wordwrap($text, 8, "\n", true), "A very\nlong\nwooooooo\nooooord."); } $orig = "I'll \"walk\" the dog now"; $a = htmlentities($orig); VS($a, "I'll "walk" the <b>dog</b> now"); VS(html_entity_decode($a), $orig); VS(bin2hex(html_entity_decode(" ", 3)), "a0"); VS(bin2hex(html_entity_decode(" ", 3, "")), "c2a0"); VS(bin2hex(html_entity_decode(" ", 3, "UTF-8")), "c2a0"); VS(html_entity_decode("& & &", ENT_QUOTES, "UTF-8"), "& & &"); VS(html_entity_decode("a test &", ENT_QUOTES, "UTF-8"), "a test &"); VS(bin2hex(html_entity_decode("È")), "c8"); VS(bin2hex(html_entity_decode("È", 3, "UTF-8")), "c388"); VS(html_entity_decode("Α"), "Α"); VS(bin2hex(html_entity_decode("Α", 3, "UTF-8")), "ce91"); $str = "A 'quote' is bold"; VS(htmlentities($str), "A 'quote' is <b>bold</b>"); VS(htmlentities($str, ENT_QUOTES), "A 'quote' is <b>bold</b>"); VS(htmlentities("\xA0", ENT_COMPAT), " "); VS(htmlentities("\xc2\xA0", ENT_COMPAT, ""), " "); VS(htmlentities("\xc2\xA0", ENT_COMPAT, "UTF-8"), " "); VS(quoted_printable_encode("egfe \015\t"), "egfe=20=0D=09"); VS(quoted_printable_decode("=65=67=66=65="), "egfe"); VS(convert_uudecode("+22!L;W9E(%!(4\"$`\n`"), "I love PHP!"); VS(convert_uuencode("test\ntext text\r\n"), "0=&5S=`IT97AT('1E>'0-\"@``\n`\n"); VS(str_rot13("PHP 4.3.0"), "CUC 4.3.0"); VS(crc32("The quick brown fox jumped over the lazy dog."), 2191738434); VERIFY(strlen(crypt("mypassword"))); VS(md5("apple"), "1f3870be274f6c49b3e31a0c6728957f"); VS(sha1("apple"), "d0be2dc421be4fcd0172e5afceea3970e2f3d940"); $trans = array("hello" => "hi", "hi" => "hello"); VS(strtr("hi all, I said hello", $trans), "hello all, I said hi"); VS(convert_cyr_string("abc", "a", "d"), "abc"); // sanity VS(hebrev("test"), "test"); // sanity VS(hebrevc("test"), "test"); // sanity VS(nl_langinfo(AM_STR), "AM"); VS(sprintf("A%sB%dC", "test", 10), "AtestB10C"); VS(sprintf("%010s", "1101"), "0000001101"); VS(sprintf("%02d", "09"), "09"); VS(vsprintf("A%sB%dC", array("test", 10)), "AtestB10C"); VS(sscanf("SN/2350001", "SN/%d"), array(2350001)); VS(sscanf("SN/2350001", "SN/%d", $out), 1); VS($out, 2350001); VS(chr(92), "\\"); VS(ord("\\"), 92); VS(money_format("%i", 1234.56), "1234.56"); VS(number_format(1234.56), "1,235"); VERIFY(strcmp("a", "b") < 0); VERIFY(strcmp("a", "A") > 0); VS(strncmp("a", "ab", 1), 0); VERIFY(strnatcmp("a", "b") < 0); VERIFY(strcasecmp("a", "a") == 0); VERIFY(strcasecmp("a", "A") == 0); VERIFY(strcasecmp("A", "a") == 0); VERIFY(strcasecmp("A", "A") == 0); VERIFY(strcasecmp("a", "b") < 0); VERIFY(strcasecmp("a", "B") < 0); VERIFY(strcasecmp("A", "b") < 0); VERIFY(strcasecmp("A", "B") < 0); VERIFY(strcasecmp("b", "a") > 0); VERIFY(strcasecmp("B", "a") > 0); VERIFY(strcasecmp("b", "A") > 0); VERIFY(strcasecmp("B", "A") > 0); VERIFY(strcasecmp("_", "a") < 0); VERIFY(strcasecmp("_", "A") < 0); VERIFY(strcasecmp("a", "_") > 0); VERIFY(strcasecmp("A", "_") > 0); VERIFY(strcasecmp("@", "`") < 0); VERIFY(strcasecmp("`", "@") > 0); VERIFY(strcasecmp("a", "a0") < 0); VERIFY(strcasecmp("a", "A0") < 0); VERIFY(strcasecmp("A", "a0") < 0); VERIFY(strcasecmp("A", "A0") < 0); VERIFY(strcasecmp("a0", "a") > 0); VERIFY(strcasecmp("a0", "A") > 0); VERIFY(strcasecmp("A0", "a") > 0); VERIFY(strcasecmp("A0", "A") > 0); VS(strncasecmp("a", "Ab", 1), 0); VERIFY(strnatcasecmp("a", "Ab") < 0); VERIFY(strcoll("a", "b") < 0); VERIFY(strcoll("a", "A") > 0); VS(substr_compare("abcde", "bc", 1, 2), 0); VS(substr_compare("abcde", "de", -2, 2), 0); VS(substr_compare("abcde", "bcg", 1, 2), 0); VS(substr_compare("abcde", "BC", 1, 2, true), 0); VS(substr_compare("abcde", "bc", 1, 3), 1); VS(substr_compare("abcde", "cd", 1, 2), -1); $email = "name@example.com"; VS(strchr($email, "@"), "@example.com"); $text = "Line 1\nLine 2\nLine 3"; VS(strrchr($text, 10), "\nLine 3"); $email = "name@example.com"; VS(strstr($email, "@"), "@example.com"); VS(strstr($email, "@", true), "name"); VS(strstr($email, "@", false), "@example.com"); VS(stristr("Hello World!", "earth"), false); VS(stristr("APPLE", 97), "APPLE"); $text = "This is a Simple text."; VS(strpbrk($text, "mi"), "is is a Simple text."); VS(strpbrk($text, "S"), "Simple text."); VS(strpos("abcdef abcdef", "a"), 0); VS(strpos("abcdef abcdef", "a", 1), 7); VS(strpos("abcdef abcdef", "A", 1), false); VS(strpos("abcdef abcdef", "", 0), false); VS(stripos("abcdef abcdef", "A", 1), 7); VS(strrpos("abcdef abcdef", "a"), 7); VS(strrpos("0123456789a123456789b123456789c", "7", -5), 17); VS(strrpos("0123456789a123456789b123456789c", "7", 20), 27); VS(strrpos("0123456789a123456789b123456789c", "7", 28), false); VS(strripos("abcdef abcdef", "A"), 7); $text = "This is a test"; VS(substr_count($text, "is"), 2); VS(substr_count($text, "is", 3), 1); VS(substr_count($text, "is", 3, 3), 0); VS(substr_count("gcdgcdgcd", "gcdgcd"), 1); VS(strspn("foo", "o", 1, 2), 2); VS(strcspn("foo", "o", 1, 2), 0); VS(strlen("test"), 4); $ret = count_chars("Two Ts and one F."); VS($ret[ord("T")], 2); VS(str_word_count("Two Ts and one F."), 5); VS(str_word_count("", 2), array()); VS(str_word_count(1, 2), array()); VS(str_word_count("1 2", 2), array()); VS(levenshtein("carrrot", "carrot"), 1); VS(similar_text("carrrot", "carrot"), 6); VS(soundex("carrot"), "C630"); VS(metaphone("carrot"), "KRT"); parse_str("first=value&arr[]=foo+bar&arr[]=baz", $output); VS($output['first'], 'value'); VS($output['arr'][0], 'foo bar'); VS($output['arr'][1], 'baz'); parse_str('a[2][i]=3&a[4][i]=5', $output); VS($output['a'][2]['i'], "3"); VS($output['a'][4]['i'], "5");