Pergunta : PHP: Descodificar Base64 modificado

Eu uso o Javascript para codificar dados binários using Base64 modificado encoding.

I quero descodificar os dados using PHP.

function BaseModified64_decode () preciso de ser modificado para suportar os usos modificados/>My da codificação de modifications.

-_.

em vez destes caráteres:
+/=
class= > " desobstruído " do
> do " codeSnippet " do class= do
class= " lineNumbers " do
class= do
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
>< notpretty " do class= " do id= " codeSnippet644494 do
 
xmlns= " http://www.w3.org/1999/xhtml " do  
 
Índice-Tipo texto " do http-equiv= do  
BaseModified64 Modified 

type= " texto/Javascript " do <script >
/* <! [CDATA [*

var BaseModified64 = {
 
	propriedade privada de //
	_keyStr: “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_. ”,
 
	método público de // para a codificação
	codificar: função (entrada) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
 
		entrada = BaseModified64. _utf8_encode (entrada);
 
		quando (i < input.length) {
 
			chr1 = input.charCodeAt (i++);
			chr2 = input.charCodeAt (i++);
			chr3 = input.charCodeAt (i++);
 
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
 
			se (isNaN (chr2)) {
				enc3 = enc4 = 64;
			} mais se (isNaN (chr3)) {
				enc4 = 64;
			}
 
			saída = output +
			isto. _keyStr.charAt (enc1) + isto. _keyStr.charAt (enc2) +
			isto. _keyStr.charAt (enc3) + isto. _keyStr.charAt (enc4);
 
		}
 
		saída do retorno;
	},
 
	método público de // para descodificar
	descodificar: função (entrada) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
 
		entrada = input.replace (/[^A-Za-z0-9 \ + \/\ =] /g, "");
 
		quando (i < input.length) {
 
			enc1 = isto. _keyStr.indexOf (input.charAt (i++));
			enc2 = isto. _keyStr.indexOf (input.charAt (i++));
			enc3 = isto. _keyStr.indexOf (input.charAt (i++));
			enc4 = isto. _keyStr.indexOf (input.charAt (i++));
 
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
 
			saída = output + String.fromCharCode (chr1);
 
			se (enc3! = 64) {
				saída = output + String.fromCharCode (chr2);
			}
			se (enc4! = 64) {
				saída = output + String.fromCharCode (chr3);
			}
 
		}
 
		saída = BaseModified64. _utf8_decode (saída);
 
		saída do retorno;
 
	},
 
	método confidencial de // para a codificação UTF-8
	_utf8_encode: função (corda) {
		corda = string.replace (/\ r \ n/g, “\ n”);
		utftext = "" do var;
 
		para (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt (n);
 
			se (c < 128) {
				utftext += String.fromCharCode (c);
			}
			mais se ((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode ((c >> 6) | 192);
				utftext += String.fromCharCode ((c & 63) | 128);
			}
			mais {
				utftext += String.fromCharCode ((c >> 12) | 224);
				utftext += String.fromCharCode (((c >> 6) & 63) | 128);
				utftext += String.fromCharCode ((c & 63) | 128);
			}
 
		}
 
		utftext do retorno;
	},
 
	método confidencial de // para descodificar UTF-8
	_utf8_decode: função (utftext) {
		corda = "" do var;
		var i = 0;
		var c = c1 = c2 = 0;
 
		quando (i < utftext.length) {
 
			c = utftext.charCodeAt (i);
 
			se (c < 128) {
				corda += String.fromCharCode (c);
				i++;
			}
			mais se ((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt (i+1);
				corda += String.fromCharCode (((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			mais {
				c2 = utftext.charCodeAt (i+1);
				c3 = utftext.charCodeAt (i+2);
				corda += String.fromCharCode (((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		corda do retorno;
	}
 
}


/*]] > *
</script>

</head> 
 
<body> 
 

Código binário de <h1>Original: </h1>
<pre>
<? mundo do eco do PHP “olá!”. chr (119). chr (254). chr (15). chr (248). chr (239). chr (255);? >
</pre>

<h1>Processed com Base64 modificado: </h1>
<pre>
type= " texto/Javascript " do <script >
document.write (BaseModified64.encode (“<? mundo do eco do PHP “olá!”. chr (119). chr (254). chr (15). chr (248). chr (239). chr (255);? >"));
</script>
</pre>

<h1>This deve combinar o código binário original: </h1>
<? PHP
eco BaseModified64_decode (“SGVsbG8gV29ybGQgd8O-D8O4w6_Dvw. .");
? >

</body> 
</html>
<? PHP

função BaseModified64_decode ($str) {
 Base64_decode do retorno ($str);
}

? >
</pre>
        </td>
      </tr>
    </table></div>
</div>

class= ></div> " desobstruído " do <div
    
class= " qRelatedRow " do <div >
    soluções >Related <span do " nome " do class=: </span>
    class= <span " valor " >
PHP " do title= " de " /Web_Development/Web_Languages-Standards/PHP/Q_26185623.html do href= do <a: Dados binários da saída using class= >PHP " qRelatedParent " do chr () “: Dados binários da saída using o chr () </a></span>
  </span></h4>
</td>
</tr>
 
  <tr><td height="2px"></td></tr> 
  <tr style="background-color:#f2f4f6"><td >
<h2 style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:14px;color:red;font-weight:bold">
<span id="ContentPlaceHolder1_tieude_as">Resposta : PHP: Descodificar Base64 modificado</span>
</h2></td></tr>
  <tr>
<td valign="top"> 
<h5><span id="ContentPlaceHolder1_ans" style="font-family:Tahoma,Geneva,sans-serif;font-size:12px;font-weight:normal;color:#000000">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
<div class="richText">
Tentar isto:<br /><br />função BaseModified64_decode ($str) {<br />    base64_decode do retorno (strtr ($str, disposição (“-” => “+”, “_ “” do =>/”, “.” =") do => “));<br />}<br /><br />hernst42 teve uma vírgula em vez de um período nos pares finais da disposição.</div>  <!-- richText -->
                      
</div>
</span></h5>
</td>
</tr>
<tr><td height="5px"></td></tr>

 <tr>
                            <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
                              <tr>
                                <td><table width="100%" height="25px" border="0" cellspacing="0" cellpadding="0">
                                  <tr>

                                    <td width="100px" bgcolor="#FFFFFF" style="padding-left:5px"><span class="f11blue">Outras soluções</span></td>
                                    <td background="http://programming4.us/images/bg-ch.gif"> </td>
                                  </tr>
                                </table></td>
                              </tr>
                              <tr>
                                <td style="padding:5px">
                                <div>
                                    <table id="ContentPlaceHolder1_DataList2" cellspacing="0" style="width:100%;border-collapse:collapse;">
		<tr>
			<td>
<table>
<tr>
<td valign="top" align="left">
<a href='http://faq.wmlcloud.com/pt/microsoft/14584.aspx' class="a4">
<li> Perguntas da entrevista do certificado de Shell da festança</li></a>
</td>
</tr>
</table>
</td>
		</tr><tr>
			<td>
<table>
<tr>
<td valign="top" align="left">
<a href='http://faq.wmlcloud.com/pt/microsoft/244.aspx' class="a4">
<li> lima de .vmdk</li></a>
</td>
</tr>
</table>
</td>
		</tr><tr>
			<td>
<table>
<tr>
<td valign="top" align="left">
<a href='http://faq.wmlcloud.com/pt/microsoft/6784.aspx' class="a4">
<li> Como encontrar a contagem da fileira em Oracle DataReader em ASP.NET?</li></a>
</td>
</tr>
</table>
</td>
		</tr><tr>
			<td>
<table>
<tr>
<td valign="top" align="left">
<a href='http://faq.wmlcloud.com/pt/microsoft/32404.aspx' class="a4">
<li> Excitador do bluetooth BCM2045 do inspiron 1720 de Dell para o profissional de Windows Xp.</li></a>
</td>
</tr>
</table>
</td>
		</tr><tr>
			<td>
<table>
<tr>
<td valign="top" align="left">
<a href='http://faq.wmlcloud.com/pt/microsoft/18068.aspx' class="a4">
<li> Como conseguir o lightbox mostrar sobre a bandeira instantânea?</li></a>
</td>
</tr>
</table>
</td>
		</tr><tr>
			<td>
<table>
<tr>
<td valign="top" align="left">
<a href='http://faq.wmlcloud.com/pt/microsoft/24608.aspx' class="a4">
<li> Fora do escritório o assistente que não trabalha w/Forwarding configurou</li></a>
</td>
</tr>
</table>
</td>
		</tr><tr>
			<td>
<table>
<tr>
<td valign="top" align="left">
<a href='http://faq.wmlcloud.com/pt/microsoft/10268.aspx' class="a4">
<li> Redistribuindo o RASGO em subnets non-contiguous do OSPF.</li></a>
</td>
</tr>
</table>
</td>
		</tr><tr>
			<td>
<table>
<tr>
<td valign="top" align="left">
<a href='http://faq.wmlcloud.com/pt/software/35892.aspx' class="a4">
<li> líquidos de corpo após a sessão da natação</li></a>
</td>
</tr>
</table>
</td>
		</tr><tr>
			<td>
<table>
<tr>
<td valign="top" align="left">
<a href='http://faq.wmlcloud.com/pt/microsoft/2468.aspx' class="a4">
<li> SQL0952N</li></a>
</td>
</tr>
</table>
</td>
		</tr><tr>
			<td>
<table>
<tr>
<td valign="top" align="left">
<a href='http://faq.wmlcloud.com/pt/microsoft/28092.aspx' class="a4">
<li> Criando um vbscript para a chave do registro - IRPStackSize</li></a>
</td>
</tr>
</table>
</td>
		</tr>
	</table>

                               
                                </div></td>
                              </tr>
                            </table></td>
                          </tr>

</table>
                    
</div>
                  </td></tr>
                  </table>
                  </form>
                         </td>

                        </tr>
                    
                      <tr>
                        <td> </td>
                        </tr>
                      </table></td>
                    </tr>
                  </table></td>
              </tr>
              </table></td>

        

            </tr>
          </table>

 
         </td>
      </tr>

<tr>
            <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td background="http://tutorial.wmlcloud.com/images/bg-mn.jpg" height="30px" style="padding:5px;color:#ffffff;font-size:12px; font-family:Tahoma, Geneva, sans-serif;text-decoration: none;" ></td>
              </tr>
              <tr>
                <td><table width="100%" border="0" cellspacing="0" cellpadding="0">


 <tr>

                    <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                          <td><img src="http://tutorial.wmlcloud.com/images/bo-l.png" alt="programming4us" width="8" height="9" /></td>
                          <td bgcolor="#FFFFFF" width="100%"></td>
                          <td><img src="http://tutorial.wmlcloud.com/images/bo-r.png" alt="programming4us" width="8" height="9" /></td>
                        </tr>
                    </table></td>
                  </tr>
                </table></td>

              </tr>
            </table></td>
          </tr>
<tr><td height="2px"></td></tr>
<tr><td>
<div align="center">


</div>
</td>
</tr>
 <tr><td height="3px"></td></tr>

      <tr>
        <td height="2px"></td>
      </tr>
      <tr>
        <td align="left">
        <table cellpadding="0" cellspacing="0" width="100%" align="left">
        <tr>
        <td valign="top">
          <div id="en"><a href='http://faq.wmlcloud.com/microsoft/4996.aspx'><img src='http://faq.wmlcloud.com/flags/en.gif'></a></div>
        </td>
          <td valign="top">
          
        </td>
          <td valign="top">
          
        </td>
          <td valign="top">
          <div id="fr"><a href='http://faq.wmlcloud.com/fr/microsoft/4996.aspx'><img src='http://faq.wmlcloud.com/flags/fr.gif'></a></div>
        </td>
          <td valign="top">
          
        </td>
          <td valign="top">
          <div id="it"><a href='http://faq.wmlcloud.com/it/microsoft/4996.aspx'><img src='http://faq.wmlcloud.com/flags/it.gif'></a></div>
        </td>
          <td valign="top">
          <div id="ru"><a href='http://faq.wmlcloud.com/ru/microsoft/4996.aspx'><img src='http://faq.wmlcloud.com/flags/ru.gif'></a></div>
        </td>
         <td valign="top">
          
        </td>
         <td valign="top">
          
        </td>
        
         <td valign="top">
          <div id="pt"><a href='http://faq.wmlcloud.com/pt/microsoft/4996.aspx'><img src='http://faq.wmlcloud.com/flags/pt.gif'></a></div>
        </td>
         <td valign="top">
          
        </td>
         <td valign="top">
          
        </td>
        </tr>
        </table>
        </td>
      </tr>
        <tr>
        <td height="2px"></td>
      </tr>

</td></tr>


 
</table>
		<script src="//cdn.intergient.com/ramp_core.js"></script>	

</body>
</html>