PHP中文竖排转换程序,文本框输入文字,转换后会竖排文字。
效果图
index.php内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?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文件内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
<?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中文竖排转换的实现方法,希望对大家的学习有所帮助。