как читать подстроку в целом

Это было трудно поставить в заголовок.

По сути, я хочу, чтобы, когда я получал какой-то случайный двоичный код, мне нужно было преобразовать определенные числовые шаблоны в объявленный символ.

Например :

вход: 11100011111
Выход: ABF

Так по сути

  • 111 = A, 000 = B, 11111 = C, 1111 = D

Примечание! Выходные данные должны соответствовать по порядку, поэтому если он начинается с 111, выходной должен начинаться с A (объявленного символа для указанного шаблона).
Там есть буква D и, по сути, первые четыре символа буквы C совпадают с буквой D, но она должна выводить наиболее похожие.

Сначала я попытался поместить это в for петля
Итак, проверьте строковые символы, если есть 1 эхо и наоборот

for ($i=0; $i < $getInput[$i] ; $i++) {
if ($getInput[$i] == 1) {
echo "ONE";
} elseif ($getInput[$i] == 0) {
echo "ZERO";
}
}

это было только для проверки, по сути, в этой теории я могу проверить, существует ли последовательный шаблон, так что 000 будет ссылаться на массив с уже назначенными различными шаблонами, а затем вывести символ, который был назначен этому шаблону.

Я также пытался использовать foreaches, но из-за неопытности …

Я провел небольшое исследование и нашел эту тему:
Как проверить, содержит ли строка определенное слово?

что-то вроде помогло с этим кодом

$a = '1110001111';

if (strpos($a, '1111') !== false) {
echo 'D';
}

Он выводит символ в правильном порядке, проблема с этим подходом заключается в том, что он как бы означает, что id нужно выписывать, если операторы повторяются, и, во-вторых, если во входных данных должно быть 1111, он будет принимать части 111 и 1111 как два разных строки и вывод их обоих

РЕДАКТИРОВАТЬ:

По сути, я только что подумал: мне нужно сравнить 4 цифры с разными шаблонами, я могу поместить строку в массив, разделить ее на 4, а затем сравнить с другим массивом, который содержит объявленные шаблоны (1111 = a и т. Д.), так что в двоичном 4-значном двоичном 0000 может быть около 17 различных шаблонов, поэтому не нужно ничего выше> 4

С другой стороны, если бы было нечетное число 1 и 0, то некоторые были бы остановлены.
Тогда они должны быть выведены как есть. поэтому, если было 1010110 = A110, так как A объявлен как образец 1010

0

Решение

Вы можете использовать str_split, чтобы разбить строку на куски по четыре цифры.
Затем я использую ассоциативный массив с заменами.

Я зацикливаю массив совпадений и символ замены эха.

$str = "111000111111";
//preg_match_all('/(.)\1*/', $str, $match);
$digits = str_split($str, 4);
$replace = array("1110" => "A", "0011" => "B", "1111" => "C");

Foreach($digits as $val){
Echo $replace[$val];
}

https://3v4l.org/QfQQ8

0

Другие решения

Этот код даст вам массив из 4 цифр, а затем вы сможете проанализировать его через foreach и поиск.

<?php
$string = "11111001011100001111";
$matches = [];
preg_match_all("/[1|0]{4}/", $string, $matches);
echo "<pre>";
print_r($matches);

Какой результат этого будет:

<pre>Array
(
[0] => Array
(
[0] => 1111
[1] => 1001
[2] => 0111
[3] => 0000
[4] => 1111
)

)
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector