Сравнить значение из строки

Мне нужно сравнить значения из строки и если они совпадают присваивать единицу значение.

if ($strBin == 1 || $strBin == 0) {
   return 1;
}
if ($strBin == " ") {
    return "\n";
}
echo "Вывод зашифрованного значения:"."</br>".$strBin."</br>"; // Вывод зашифрованной строки

У меня выводит то же значение что и было изначально.

Пробовал вот так

$arraySource = str_split($strBin); 
$arrayBinary1 = array_map(function() {

$arrayBinary = array_map(function() {
   return 1."\n";
}, $arraySource);

$strBinary = implode($arrayBinary); // закодированная строка
echo "Содержание файла:"."</br>".$strBinary."</br>";

Такой код вывод зашифрованное сообщение, но после каждого символа делает пробел, а мне нужно что бы было вот так:

Исходное сообщение: 0100 1101 0011

Закодированное сообщение единицами: 1111 1111 1111

В Примере 1 выводит вот так:

Исходное сообщение: 0100 1101 0011

В Примере 2 выводит вот так:

Исходное сообщение: 0100 1101 0011

Закодированное сообщение единицами: 1 1 1 1 1 1 1 1 1 1 1 1


Ответы (2 шт):

Автор решения: Mcile
$a = '0100 1101 0011';
echo str_replace([0,1],1,$a); //1111 1111 1111
→ Ссылка
Автор решения: vp_arth

Вам просто нужно сохранять исходные пробелы:

$str = '1001 1100 0100 1101';

$encoded = implode(array_map(fn($ch) => $ch === ' ' ? ' ' : '1', str_split($str)));

echo $encoded; // 1111 1111 1111 1111

$str = '1001 1100 0100 1101';

$encoded = implode(array_map(function($ch) { 
  return $ch === ' ' ? ' ' : random_int(0, 1);
}, str_split($str)));

echo $encoded;

3v4l

→ Ссылка