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
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我