1--TEST-- 2mb_convert_variables() 3--SKIPIF-- 4<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?> 5--INI-- 6output_handler= 7mbstring.language=Japanese 8--FILE-- 9<?php 10// TODO: Add more tests 11//$debug = true; // Uncomment this line to view error/warning/notice message in *.out file 12ini_set('include_path', __DIR__); 13include_once('common.inc'); 14 15// SJIS string (BASE64 encoded) 16$sjis = base64_decode('k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg=='); 17// JIS string (BASE64 encoded) 18$jis = base64_decode('GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg=='); 19// EUC-JP string 20$euc_jp = '���ܸ�ƥ����ȤǤ���01234������������'; 21 22// Test for single scalar 23echo "== SCALAR TEST ==\n"; 24$s = $sjis; 25$encoding = mb_convert_variables('EUC-JP', 'SJIS', $s); 26print("$encoding\n"); // SJIS 27print("$s\n"); // Converted to EUC-JP 28 29$s = $jis; 30$encoding = mb_convert_variables('EUC-JP', 'JIS', $s); 31print("$encoding\n"); // JIS 32print("$s\n"); // Converted to EUC-JP 33 34$s = $euc_jp; 35$encoding = mb_convert_variables('SJIS', 'EUC-JP', $s); 36print("$encoding\n"); // EUC-JP 37print(base64_encode($s)."\n"); // Converted to SJIS (base64 encoded) 38 39$s = $euc_jp; 40$encoding = mb_convert_variables('JIS', 'EUC-JP', $s); 41print("$encoding\n"); // EUC-JP 42print(base64_encode($s)."\n"); // Converted to JIS (base64 encoded) 43 44// Test for multiple slcaler 45$s1 = $euc_jp; 46$s2 = $euc_jp; 47$s3 = $euc_jp; 48$encoding = mb_convert_variables('EUC-JP', 'auto', $s1, $s2, $s3); 49print("$encoding\n"); // EUC-JP 50print("$s1$s2$s3\n"); // Converted to EUC-JP 51 52 53 54// Note: Mixing encoding in array/object is not supported? 55// Test for array 56echo "== ARRAY TEST ==\n"; 57$a = array($s3, $s2, $s1); 58$aa = $a; 59$encoding = mb_convert_variables('EUC-JP', 'auto', $aa); 60print("$encoding\n"); // EUC-JP 61print("{$aa[0]}{$aa[1]}{$aa[2]}\n"); // Converted to EUC-JP 62 63$a = array($s1, $s2, $s3); 64$aa = $a; 65$encoding = mb_convert_variables('EUC-JP', 'auto', $aa); 66print("$encoding\n"); // EUC-JP 67print("{$aa[0]}{$aa[1]}{$aa[2]}\n"); // Converted to EUC-JP 68 69 70 71// Test for object 72echo "== OBJECT TEST ==\n"; 73class foo 74{ 75 public $s1; 76 public $s2; 77 public $s3; 78 79 function __construct() 80 { 81 global $sjis, $jis, $euc_jp; 82 83 $this->s1 = $euc_jp; 84 $this->s2 = $euc_jp; 85 $this->s3 = $euc_jp; 86 } 87} 88 89class bar 90{ 91 public $s1; 92 public $s2; 93 public $s3; 94 95 function __construct() 96 { 97 global $sjis, $jis, $euc_jp; 98 99 $this->s1 = $euc_jp; 100 $this->s2 = $euc_jp; 101 $this->s3 = $euc_jp; 102 } 103} 104 105 106$o = new foo; 107$oo = $o; 108$encoding = mb_convert_variables('EUC-JP', 'auto', $oo); 109print("$encoding\n"); // EUC-JP 110print("{$oo->s1}{$oo->s2}{$oo->s3}\n"); // Converted to EUC-JP 111 112$o = new bar; 113$oo = $o; 114$encoding = mb_convert_variables('EUC-JP', 'auto', $oo); 115print("$encoding\n"); // EUC-JP 116print("{$oo->s1}{$oo->s2}{$oo->s3}\n"); // Converted to EUC-JP 117 118 119// Test for scalar, array and object 120echo "== SCALAR, ARRAY AND OBJECT TEST ==\n"; 121 122$s1 = $euc_jp; 123$s2 = $euc_jp; 124$s3 = $euc_jp; 125$aa = $a; 126$oo = $o; 127 128$encoding = mb_convert_variables('EUC-JP', 'auto', $s1, $s2, $s3, $aa, $oo); 129print("$encoding\n"); // EUC-JP 130print("$s1$s2$s3\n"); // Converted to EUC-JP 131print("{$aa[0]}{$aa[1]}{$aa[2]}\n"); // Converted to EUC-JP 132print("{$oo->s1}{$oo->s2}{$oo->s3}\n"); // Converted to EUC-JP 133 134 135?> 136--EXPECT-- 137== SCALAR TEST == 138SJIS 139���ܸ�ƥ����ȤǤ���01234������������ 140JIS 141���ܸ�ƥ����ȤǤ���01234������������ 142EUC-JP 143k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg== 144EUC-JP 145GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg== 146EUC-JP 147���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������ 148== ARRAY TEST == 149EUC-JP 150���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������ 151EUC-JP 152���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������ 153== OBJECT TEST == 154EUC-JP 155���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������ 156EUC-JP 157���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������ 158== SCALAR, ARRAY AND OBJECT TEST == 159EUC-JP 160���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������ 161���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������ 162���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������ 163