1--TEST--
2Test strtr() function : usage variations - string containing special chars for 'str' argument
3--FILE--
4<?php
5/* Prototype  : string strtr(string $str, string $from[, string $to]);
6                string strtr(string $str, array $replace_pairs);
7 * Description: Translates characters in str using given translation tables
8 * Source code: ext/standard/string.c
9*/
10
11/* Testing strtr() function by passing the
12 *   string containing various special characters for 'str' argument and
13 *   corresponding translation pair of chars for 'from', 'to' & 'replace_pairs' arguments
14*/
15
16echo "*** Testing strtr() : string containing special chars for 'str' arg ***\n";
17
18/* definitions of required input variables */
19$count = 1;
20
21$heredoc_str = <<<EOD
22%
23#$*&
24text & @()
25EOD;
26
27//array of string inputs for $str
28$str_arr = array(
29  //double quoted strings
30  "%",
31  "#$*",
32  "text & @()",
33
34  //single quoted strings
35  '%',
36  '#$*',
37  'text & @()',
38
39  //heredoc string
40  $heredoc_str
41);
42
43$from = "%#$*&@()";
44$to = "specials";
45$replace_pairs = array("$" => "%", "%" => "$", "#*&@()" => "()@&*#");
46
47/* loop through to test strtr() with each element of $str_arr */
48for($index = 0; $index < count($str_arr); $index++) {
49  echo "-- Iteration $count --\n";
50
51  $str = $str_arr[$index];  //getting the array element in 'str' variable
52
53  //strtr() call in three args syntax form
54  var_dump( strtr($str, $from, $to) );
55
56  //strtr() call in two args syntax form
57  var_dump( strtr($str, $replace_pairs) );
58
59  $count++;
60}
61echo "*** Done ***";
62?>
63--EXPECT--
64*** Testing strtr() : string containing special chars for 'str' arg ***
65-- Iteration 1 --
66string(1) "s"
67string(1) "$"
68-- Iteration 2 --
69string(3) "pec"
70string(3) "#%*"
71-- Iteration 3 --
72string(10) "text i als"
73string(10) "text & @()"
74-- Iteration 4 --
75string(1) "s"
76string(1) "$"
77-- Iteration 5 --
78string(3) "pec"
79string(3) "#%*"
80-- Iteration 6 --
81string(10) "text i als"
82string(10) "text & @()"
83-- Iteration 7 --
84string(17) "s
85peci
86text i als"
87string(17) "$
88#%*&
89text & @()"
90*** Done ***
91