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