Как кодировать base_64 без косой черты в PHP?

Исходная строка:

$string = "Home/Gallery/Images/Mountains";

Затем я кодирую эту строку в base64_encode():

echo base64_encode($string);

Вывод:

SG9tZS9HYWxsZXJ5L0ltYWdlcy9Nb3VudGFpbnM=

Но я хочу показать этот вывод:

SG9tZS9H/YWxsZXJ5L0lt/YWdlcy9Nb3V/udGFpbnM=


Посмотрите на косые черты

означает, что я не хочу, чтобы base64_encode() никогда не кодировал косую черту / и показывал косую черту в исходной форме, но другая строка всегда преобразовывалась в base64_encode()

Здесь есть кто-то, кто может ответить мне, и, пожалуйста, также расскажите, как расшифровать?

(Извините за плохой английский)


person Burhan    schedule 24.07.2020    source источник
comment
Я просто должен спросить, почему вы не хотите, чтобы косые черты были закодированы?   -  person Dave    schedule 24.07.2020
comment
@MarkusZeller, как пометить как правильный?   -  person Burhan    schedule 24.07.2020


Ответы (1)


Вы можете разделить его и использовать отдельные части для кодирования. Вы не можете исключить любые символы.

Обратите внимание, вы получите несколько дополнительных байтов заполнения!

$string = "Home/Gallery/Images/Mountains";

echo join('/', array_map(fn($v) => base64_encode($v), explode('/', $string)));

SG9tZQ==/R2FsbGVyeQ==/SW1hZ2Vz/TW91bnRhaW5z

person Markus Zeller    schedule 24.07.2020
comment
Привет, Маркус Целлер, это неправильный ответ, я пробовал это - person Burhan; 24.07.2020
comment
@Burhan, я думаю, что это работает только в PHP ›= 7.4, проверьте: 3v4l.org/qYBjS - person GNassro; 24.07.2020
comment
@Markus Zeller У меня есть php 7.3, и эта проблема показывает: Ошибка синтаксического анализа: синтаксическая ошибка, неожиданное '=>' (T_DOUBLE_ARROW), ожидание ',' или ')' в D:\Xampp\htdocs\skote\check.php на строка 15 - person Burhan; 24.07.2020
comment
Используйте это для PHP7.3 echo join('/', array_map(function ($v) { return base64_encode($v); }, explode('/', $string)) ); - person Markus Zeller; 24.07.2020
comment
Подскажите, пожалуйста, решение для php 7.3. - person Burhan; 24.07.2020
comment
@ Бурхан Я только что сделал. Прочитайте мой комментарий выше. Если вы не используете текущую версию, укажите тег версии. - person Markus Zeller; 24.07.2020
comment
@MarkusZeller Спасибо Спасибо Большое спасибо ... Второй код работает на моем ноутбуке - person Burhan; 24.07.2020
comment
В PHP7.4 вы можете использовать сокращения для лямбда-функций. Который выглядит чище, как вы можете использовать в JavaScript. - person Markus Zeller; 24.07.2020
comment
@MarkusZeller Я следил за тобой .. Спасибо, что дал мне решение - person Burhan; 24.07.2020