code: public static function renderFromOpcodes($from, $opcodes, $callback)
      {
          if (!is_callable($callback)) {
              return;
          }
          $opcodes_len = strlen($opcodes);
          $from_offset = $opcodes_offset = 0;
          while ($opcodes_offset < $opcodes_len) {
              $opcode = substr($opcodes, $opcodes_offset, 1);
              $opcodes_offset++;
              $n = intval(substr($opcodes, $opcodes_offset));
              if ($n) {
                  $opcodes_offset += strlen(strval($n));
              } else {
                  $n = 1;
              }
              if ($opcode === 'c') { // copy n characters from source
                  call_user_func($callback, 'c', $from, $from_offset, $n, '');
                  $from_offset += $n;
              } else if ($opcode === 'd') { // delete n characters from source
                  call_user_func($callback, 'd', $from, $from_offset, $n, '');
                  $from_offset += $n;
              } else /* if ( $opcode === 'i' ) */ { // insert n characters from opcodes
                  call_user_func($callback, 'i', $opcodes, $opcodes_offset + 1, $n);
                  $opcodes_offset += 1 + $n;
              }
          }
      }
docs: ------------------------------------------------------------------------
  Generic opcodes parser, user must supply callback for handling
  single opcode