private function itf_encode($data) {
$data = preg_replace('/[^0-9]/', '', $data);
if (strlen($data) % 2) $data = '0' . $data;
$blocks = array();
/* Quiet zone, start. */
$blocks[] = array(
'm' => array(array(0, 10, 0))
);
$blocks[] = array(
'm' => array(
array(1, 1, 1),
array(0, 1, 1),
array(1, 1, 1),
array(0, 1, 1),
)
);
/* Data. */
for ($i = 0, $n = strlen($data); $i < $n; $i += 2) {
$c1 = substr($data, $i, 1);
$c2 = substr($data, $i+1, 1);
$b1 = $this->itf_alphabet[$c1];
$b2 = $this->itf_alphabet[$c2];
$blocks[] = array(
'm' => array(
array(1, 1, $b1[0]),
array(0, 1, $b2[0]),
array(1, 1, $b1[1]),
array(0, 1, $b2[1]),
array(1, 1, $b1[2]),
array(0, 1, $b2[2]),
array(1, 1, $b1[3]),
array(0, 1, $b2[3]),
array(1, 1, $b1[4]),
array(0, 1, $b2[4]),
),
'l' => array($c1 . $c2)
);
}
/* End, quiet zone. */
$blocks[] = array(
'm' => array(
array(1, 1, 2),
array(0, 1, 1),
array(1, 1, 1),
)
);
$blocks[] = array(
'm' => array(array(0, 10, 0))
);
/* Return code. */
return array('g' => 'l', 'b' => $blocks);
}