Это было трудно поставить в заголовок.
По сути, я хочу, чтобы, когда я получал какой-то случайный двоичный код, мне нужно было преобразовать определенные числовые шаблоны в объявленный символ.
Например :
вход: 11100011111
Выход: ABF
Так по сути
Примечание! Выходные данные должны соответствовать по порядку, поэтому если он начинается с 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
Вы можете использовать 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];
}
Этот код даст вам массив из 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
)
)