1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- namespace bank;
- require_once(__DIR__ . '/IBank.php');
- require_once(__DIR__ . '/bcm.php');
- require_once(__DIR__ . '/ccb.php');
- require_once(__DIR__ . '/ccbb.php');
- require_once(__DIR__ . '/spdb.php');
- require_once(__DIR__ . '/cmbc.php');
- require_once(__DIR__ . '/cmbcex.php');
- require_once(__DIR__ . '/cmbc16.php');
- require_once(__DIR__ . '/cmbc28.php');
- require_once(__DIR__ . '/hfb.php');
- function mb_str_replace($search, $replace, $subject)
- {
- if (is_array($subject)) {
- $ret = [];
- foreach ($subject as $key => $val) {
- $ret[$key] = mb_str_replace($search, $replace, $val);
- }
- return $ret;
- }
- foreach ((array)$search as $key => $s) {
- if ($s == '') {
- continue;
- }
- $r = !is_array($replace) ? $replace : (array_key_exists($key, $replace) ? $replace[$key] : '');
- $pos = mb_strpos($subject, $s, 0, 'UTF-8');
- while ($pos !== false) {
- $subject = mb_substr($subject, 0, $pos, 'UTF-8') . $r . mb_substr($subject, $pos + mb_strlen($s, 'UTF-8'), 65535, 'UTF-8');
- $pos = mb_strpos($subject, $s, $pos + mb_strlen($r, 'UTF-8'), 'UTF-8');
- }
- }
- return $subject;
- }
- class converter
- {
- private $mState;
- private $mConveters;
- private $mCurConveter;
- public function __construct()
- {
- $this->mState = 0;
- $this->mConveters = [new ccb(), new ccbb(), new bcm(), new spdb(), new cmbc(), new cmbcex(), new cmbc16(), new cmbc28(), new hfb()];
- $this->clear();
- }
- private function clear()
- {
- foreach ($this->mConveters as $item) {
- $item->clear();
- }
- $this->mCurConveter = null;
- }
- public function start()
- {
- $this->mState = 0;
- $this->clear();
- }
- public function end()
- {
- $this->mState = 0;
- $this->clear();
- }
- public function convert($line)
- {
- if ($this->mState === 0) {
- if ($this->match($line)) {
- $this->mState = 1;
- }
- return [];
- } else {
- $ret = $this->mCurConveter->convert($line);
- return $ret;
- }
- }
- private function match($line)
- {
- foreach ($this->mConveters as $conveter) {
- if ($conveter->match($line)) {
- $this->mCurConveter = $conveter;
- return true;
- }
- }
- return false;
- }
- }
|