PHP中文竖排转换实现方法


Posted in PHP onOctober 23, 2015

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中文竖排转换的实现方法,希望对大家的学习有所帮助。

PHP 相关文章推荐
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 PHP
CI(CodeIgniter)框架配置
Jun 10 PHP
php实现的短网址算法分享
Jun 20 PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 PHP
php中数据库连接方式pdo和mysqli对比分析
Feb 25 PHP
php计算一个文件大小的方法
Mar 30 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 PHP
php实现三级级联下拉框
Apr 17 PHP
php实现留言板功能(会话控制)
May 23 PHP
PHP实现的策略模式简单示例
Aug 25 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 PHP
Laravel框架实现定时发布任务的方法
Aug 16 PHP
浅谈php7的重大新特性
Oct 23 #PHP
php数字每三位加逗号的功能函数
Oct 22 #PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
Oct 22 #PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
Oct 22 #PHP
PHP实现无限级分类(不使用递归)
Oct 22 #PHP
PHP实现递归无限级分类
Oct 22 #PHP
php防止网站被攻击的应急代码
Oct 21 #PHP
You might like
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
浅析python中的分片与截断序列
2016/08/09 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
python模拟斗地主发牌
2020/04/22 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
幼儿教师寄语集锦
2014/04/03 职场文书
协议书格式
2014/04/23 职场文书
英文求职信范文
2014/05/23 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
python基础之while循环语句的使用
2021/04/20 Python
Python 用户输入和while循环的操作
2021/05/23 Python
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python