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实现的简单压缩英文字符串的代码
Apr 24 PHP
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
ajax取消挂起请求的处理方法
Mar 18 PHP
开源php中文分词系统SCWS安装和使用实例
Apr 11 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
Jun 26 PHP
php下Memcached入门实例解析
Jan 05 PHP
php生成固定长度纯数字编码的方法
Jul 09 PHP
学习php设计模式 php实现适配器模式
Dec 07 PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 PHP
php+mysql查询实现无限下级分类树输出示例
Oct 03 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
PHP预定义接口――Iterator用法示例
Jun 05 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
Syphon 使用方法
2021/03/03 冲泡冲煮
php基础知识:控制结构
2006/12/13 PHP
PHP5中虚函数的实现方法分享
2011/04/20 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
javascript中的window.location.search方法简介
2013/09/02 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
vue Element左侧无限级菜单实现
2020/06/10 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
在Python编程过程中用单元测试法调试代码的介绍
2015/04/02 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
python 为什么说eval要慎用
2019/03/26 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
Python3 中作为一等对象的函数解析
2019/12/11 Python
了解一下python内建模块collections
2020/09/07 Python
行政专员工作职责
2013/12/22 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
给分销商的致歉信
2014/01/14 职场文书
网站推广策划方案
2014/06/04 职场文书
2015年教师节慰问信
2015/03/23 职场文书
小平您好观后感
2015/06/09 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python