Что-то с головой совсем плохо, раз туда попали такие мысли.
<?php $source = "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>."; $source = array_values(array_filter(preg_split('//', $source))); $chain = array(0); $cell = 0; $brackets = 0; for($i=0; $i<count($source); ++$i) { switch($source[$i]) { case "+" : // увеличиваем значение текущей ячейки $chain[$cell]++; break; case "-" : // уменьшаем значение текущей ячейки $chain[$cell]--; break; case "." : // выводим символ print chr($chain[$cell]); break; case "," : // считать символ из STDIN $chain[$cell] = ord(fgetc(STDIN)); break; case ">" : // переход к следующей ячейке $cell++; if(!isset($chain[$cell])) { $chain[$cell] = 0; } break; case "<" : // переход к предыдущей ячейке $cell--; if(!isset($chain[$cell])) { $chain[$cell] = 0; } break; case "[" : // начало цикла if(!$chain[$cell]) { $brackets = 1; while($brackets) { $i++; if($source[$i] == "[") { // был открыт вложенный цикл $brackets++; } else if($source[$i] == "]") { // цикл закрыт $brackets--; } } } break; case "]" : // конец цикла if($chain[$cell]) { $brackets = 1; while($brackets) { $i--; if($source[$i] == "]") { // был закрыт вложенный цикл $brackets++; } else if($source[$i] == "[") { // цикл открыт $brackets--; } } } break; } }
В результате получим:
Hello World!
Пример кода на Brainfuck взят с wiki.