PHP-рядки — послідовності байтів, не символів. strlen('Привіт') = 12 (байти), не 6. Для коректної роботи з Unicode — mb_ функції: mb_strlen(), mb_substr(), mb_strtolower().
Кодує бінарні дані у рядок із 64 символів (A-Z, a-z, 0-9, +, /). Збільшує розмір на ~33%. Не шифрування — лише кодування. Використання:
data:image/png;base64,iVBOR...base64_encode('Hello') // "SGVsbG8="
base64_decode('SGVsbG8=') // "Hello"