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+MySql编写聊天室
Oct 09 PHP
在PHP3中实现SESSION的功能(三)
Oct 09 PHP
给初学者的30条PHP最佳实践(荒野无灯)
Aug 02 PHP
php判断变量类型常用方法
Apr 24 PHP
PHP关联链接常用代码
Nov 05 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 PHP
php生成xml时添加CDATA标签的方法
Oct 17 PHP
php文件上传类的分享
Jul 06 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
php解决crontab定时任务不能写入文件问题的方法分析
Sep 16 PHP
imagettftext() 失效,不起作用
Mar 09 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
php通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
js中运算符&amp;&amp; 和 || 的使用记录
2014/08/21 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
用Python编写简单的微博爬虫
2016/03/04 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
python生成带有表格的图片实例
2019/02/03 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
Python中base64与xml取值结合问题
2019/12/22 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
使用K.function()调试keras操作
2020/06/17 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
KTV的创业计划书范文
2014/02/02 职场文书
行政部岗位职责范本
2014/03/13 职场文书
校园文明标语
2014/06/13 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
2015年妇女工作总结
2015/05/14 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers