PHP中文竖排转换实现方法

前端技术 2023/09/06 PHP

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

效果图

index.php内容

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

ccw.inc.php文件内容:

<?php 
/** 
 * 转换中文字符串至古文排版 
 */ 
class CCW { 
 protected $SEPARATOR = \'┆\'; 
 protected $BLANK = \' \'; 
 protected $CHARLIST = array( 
 \'0\' => \'0\', \'1\' => \'1\', \'2\' => \'2\', \'3\' => \'3\', \'4\' => \'4\', \'5\' => \'5\', 
 \'6\' => \'6\', \'7\' => \'7\', \'8\' => \'8\', \'9\' => \'9\', \'a\' => \'a\', \'b\' => \'b\', 
 \'c\' => \'c\', \'d\' => \'d\', \'e\' => \'e\', \'f\' => \'f\', \'g\' => \'g\', \'h\' => \'h\', 
 \'i\' => \'i\', \'j\' => \'j\', \'k\' => \'k\', \'l\' => \'l\', \'m\' => \'m\', \'n\' => \'n\', 
 \'o\' => \'o\', \'p\' => \'p\', \'q\' => \'q\', \'r\' => \'r\', \'s\' => \'s\', \'t\' => \'t\', 
 \'u\' => \'u\', \'v\' => \'v\', \'w\' => \'w\', \'x\' => \'x\', \'y\' => \'y\', \'z\' => \'z\', 
 \'A\' => \'A\', \'B\' => \'B\', \'C\' => \'C\', \'D\' => \'D\', \'E\' => \'E\', \'F\' => \'F\', 
 \'G\' => \'G\', \'H\' => \'H\', \'I\' => \'I\', \'J\' => \'J\', \'K\' => \'K\', \'L\' => \'L\', 
 \'M\' => \'M\', \'N\' => \'N\', \'O\' => \'O\', \'P\' => \'P\', \'Q\' => \'Q\', \'R\' => \'R\', 
 \'S\' => \'S\', \'T\' => \'T\', \'U\' => \'U\', \'V\' => \'V\', \'W\' => \'W\', \'X\' => \'X\', 
 \'Y\' => \'Y\', \'Z\' => \'Z\', \'(\' => \'︵\', \')\' => \'︶\', \'[\' => \'︻\', \']\' => \'︼\', 
 \'{\' => \'︷\', \'}\' => \'︸\', \'<\' => \'︽\', \'>\' => \'︾\', \'*\' => \'*\', \'&\' => \'&\', 
 \'^\' => \'︿\', \'%\' => \'%\', \'$\' => \'$\', \'#\' => \'#\', \'@\' => \'@\', \'!\' => \'!\', 
 \'~\' => \'~\', \'`\' => \'`\', \'+\' => \'+\', \'-\' => \'-\', \'=\' => \'=\', \'_\' => \'_\', 
 \'|\' => \'|\', \'\\\\\' =>\'\\', \'\\\'\' =>\''\', \'\"\' => \'"\', \';\' => \';\', \':\' => \':\', 
 \'.\' => \'.\', \',\' => \',\', \'?\' => \'?\', \'/\' => \'/\', \' \' => \' \', \'(\' => \'︵\', 
 \')\' => \'︶\', \'【\' => \'︻\', \'】\' => \'︼\', \'《\' => \'︽\', \'》\' => \'︾\' 
 ); 
 
 public $height = 10; // 默认竖排高度 
 
 /** 
 * 转换文字到竖排 
 * 
 * @return string 
 */ 
 function convert($original, $height = null) { 
 $original = preg_replace(\'/\\s/\', \'\', $original); // 去除多余的空格等 
 $strarr = $this->mbStringToArray($original); // 分解成数组 
 $height = $height ? intval($height) : $this->height; 
 $total = sizeof($strarr); 
 $width = ceil($total / $height); 
 
 // 分割中文字符 
 $result = array(); 
 for ($i = 0, $tmp = array(); $i < $total; $i++) { 
 $c = $strarr[$i]; // 格式化当前字符 
 $tmp[] = isset($this->CHARLIST[$c]) ? $this->CHARLIST[$c] : $c; 
 if (sizeof($tmp) == $height) { 
 $result[] = $tmp; 
 $tmp = array(); 
 } 
 } 
 
 // 如果还有剩余的字符 
 if (sizeof($tmp)) { 
 $result[] = $tmp; 
 } 
 
 // 开始输出 
 $output = \"<pre>\"; 
 for($j = 0; $j < $height; $j++) { 
 for ($i = $width - 1; $i >= 0; $i--) { 
 $output .= $this->SEPARATOR; 
 $output .= isset($result[$i][$j]) ? $result[$i][$j] : $this->BLANK; 
 } 
 $output .= $this->SEPARATOR; 
 $output .= \"\\n\"; 
 } 
 
 return $output.\"</pre>\"; 
 } 
 
 
 /** 
 * 转换字符串至数组 
 */ 
 private function mbStringToArray ($string, $encoding = \'utf-8\') { 
 while ($strlen = mb_strlen($string)) { 
 $array[] = mb_substr($string, 0, 1, $encoding); 
 $string = mb_substr($string, 1, $strlen, $encoding); 
 } 
 
 return $array; 
 } 
} 
?> 

以上就是php中文竖排转换的实现方法,希望对大家的学习有所帮助。

本文地址:https://www.stayed.cn/item/17335

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。