2015-01-09 6 views
0

У меня есть некоторая проблема с base64 кодировать и декодировать, я хотел бы декодировать мою строку с php, я нашел решение, но это не очень хорошо, Мое ожидание Я бы хотел декодировать только строку которые были закодированы, а другая строка, которая не закодирована, должна оставаться нормальной.Результат отличается при использовании base64_decode с php

Вот строка:

$string = "I need your help 4Z6B4Z+S4Z6b4Z624Z+G4Z6E4oCL4Z6O4Z624Z6f4Z+L4oCL"; 

Вот что я пробовал:

echo base64_decode($string); 

Результат:

SSBuZWVkIHlvdXIgaGVscA = ខ្លាំង​ណាស់​ 

Результат выше не то, что мне нужно, ниже что мне нужно:

I need your help ខ្លាំង​ណាស់​ 

Итак, может ли кто-нибудь сказать мне, как это сделать с помощью php.

+0

'base64_decode' ожидает строку, в кодировке base64. Вам нужно сначала отделить части base64 от других текстовых частей, сделать на них 'base64_decode', а затем объединить их обратно в одну строку. – Aziz

+0

Другая проблема заключается в том, как вы относитесь к строке, подобной «ROFL». Его можно интерпретировать как как обычный текст, так и строку с кодировкой base64 (которая декодирует 3-байтную строку). – Aziz

+0

Не могли бы вы рассказать мне, как проверить, была ли строка закодирована? – Samphors

ответ

0

Это должно работать для вас:

<?php 

    $str = "I need your help 4Z6B4Z+S4Z6b4Z624Z+G4Z6E4oCL4Z6O4Z624Z6f4Z+L4oCL"; 


    for($count = 0; $count < strlen($str); $count++) { 

     $temp = substr($str, $count, strlen($str)); 
     if (base64_encode(base64_decode($temp, true)) === $temp) { 
      echo substr($str, 0, $count) . base64_decode($str); 
      break; 
     } 

    } 

?> 
Смежные вопросы