PHP中文竖排转换程序

PHP中文竖排转换程序,文本框输入文字,转换后会竖排文字。

效果图

index.php内容

  1. <?php 
  2. include('ccw.inc.php'); 
  3.  
  4. if (isset($_POST['string'])){ 
  5.     $ccw = new CCW; 
  6.     $converd = $ccw->convert($_POST['string']); 
  7. ?> 
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  9. <form method="post" charset="utf-8"> 
  10.     <p><?php echo $converd ?></p> 
  11.     <p><textarea name="string" cols="50" rows="10"></textarea></p> 
  12.     <p><input type="submit" /></p> 
  13. </form> 

ccw.inc.php文件内容:

  1. <?php 
  2. /** 
  3.  * 转换中文字符串至古文排版 
  4.  */ 
  5. class CCW { 
  6.     protected $SEPARATOR = '┆'
  7.     protected $BLANK     = ' '
  8.     protected $CHARLIST  = array
  9.         '0' => '0''1' => '1''2' => '2''3' => '3''4' => '4''5' => '5'
  10.         '6' => '6''7' => '7''8' => '8''9' => '9''a' => 'a''b' => 'b'
  11.         'c' => 'c''d' => 'd''e' => 'e''f' => 'f''g' => 'g''h' => 'h'
  12.         'i' => 'i''j' => 'j''k' => 'k''l' => 'l''m' => 'm''n' => 'n'
  13.         'o' => 'o''p' => 'p''q' => 'q''r' => 'r''s' => 's''t' => 't'
  14.         'u' => 'u''v' => 'v''w' => 'w''x' => 'x''y' => 'y''z' => 'z'
  15.         'A' => 'A''B' => 'B''C' => 'C''D' => 'D''E' => 'E''F' => 'F'
  16.         'G' => 'G''H' => 'H''I' => 'I''J' => 'J''K' => 'K''L' => 'L'
  17.         'M' => 'M''N' => 'N''O' => 'O''P' => 'P''Q' => 'Q''R' => 'R'
  18.         'S' => 'S''T' => 'T''U' => 'U''V' => 'V''W' => 'W''X' => 'X'
  19.         'Y' => 'Y''Z' => 'Z''(' => '︵'')' => '︶''[' => '︻'']' => '︼'
  20.         '{' => '︷''}' => '︸''<' => '︽''>' => '︾''*' => '*''&' => '&'
  21.         '^' => '︿''%' => '%''$' => '$''#' => '#''@' => '@''!' => '!'
  22.         '~' => '~''`' => '`''+' => '+''-' => '-''=' => '=''_' => '_'
  23.         '|' => '|''\\' =>'', '\'' =>''''"' => '"'';' => ';'':' => ':'
  24.         '.' => '.'',' => ',''?' => '?''/' => '/'' ' => ' ''(' => '︵'
  25.         ')' => '︶''【' => '︻''】' => '︼''《' => '︽''》' => '︾' 
  26.     ); 
  27.  
  28.     public $height = 10; // 默认竖排高度 
  29.  
  30.     /** 
  31.      * 转换文字到竖排 
  32.      * 
  33.      * @return string 
  34.      */ 
  35.     function convert($original$height = null) { 
  36.         $original = preg_replace('/\s/'''$original); // 去除多余的空格等 
  37.         $strarr   = $this->mbStringToArray($original);   // 分解成数组 
  38.         $height   = $height ? intval($height) : $this->height; 
  39.         $total    = sizeof($strarr); 
  40.         $width    = ceil($total / $height); 
  41.  
  42.         // 分割中文字符 
  43.         $result = array(); 
  44.         for ($i = 0, $tmp = array(); $i < $total$i++) { 
  45.             $c = $strarr[$i]; // 格式化当前字符 
  46.             $tmp[] = isset($this->CHARLIST[$c]) ? $this->CHARLIST[$c] : $c
  47.             if (sizeof($tmp) == $height) { 
  48.                 $result[] = $tmp
  49.                 $tmp = array(); 
  50.             } 
  51.         } 
  52.  
  53.         // 如果还有剩余的字符 
  54.         if (sizeof($tmp)) { 
  55.             $result[] = $tmp
  56.         } 
  57.  
  58.         // 开始输出 
  59.         $output = "<pre>"
  60.         for($j = 0; $j < $height$j++) { 
  61.             for ($i = $width - 1; $i >= 0; $i--) { 
  62.                 $output .= $this->SEPARATOR; 
  63.                 $output .= isset($result[$i][$j]) ? $result[$i][$j] : $this->BLANK; 
  64.             } 
  65.             $output .= $this->SEPARATOR; 
  66.             $output .= "\n"
  67.         } 
  68.  
  69.         return $output."</pre>"
  70.     } 
  71.  
  72.  
  73.     /** 
  74.      * 转换字符串至数组 
  75.      */ 
  76.     private function mbStringToArray ($string$encoding = 'utf-8') { 
  77.         while ($strlen = mb_strlen($string)) { 
  78.             $array[] = mb_substr($string, 0, 1, $encoding); 
  79.             $string  = mb_substr($string, 1, $strlen$encoding); 
  80.         } 
  81.  
  82.         return $array
  83.     } 
  84. ?> 

转载请注明:代码家园 » PHP中文竖排转换程序

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)