ホームページ  >  記事  >  バックエンド開発  >  PHP中国語垂直変換プログラム

PHP中国語垂直変換プログラム

墨辰丷
墨辰丷オリジナル
2018-06-06 17:21:501749ブラウズ

本篇文章主要介绍PHP中文竖排转换程序,感兴趣的朋友参考下,希望对大家有所帮助。

效果图

index.php内容

<?php 
include(&#39;ccw.inc.php&#39;); 
 
if (isset($_POST[&#39;string&#39;])){ 
 $ccw = new CCW; 
 $converd = $ccw->convert($_POST[&#39;string&#39;]); 
} 
?> 
<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 = &#39;┆&#39;; 
 protected $BLANK = &#39; &#39;; 
 protected $CHARLIST = array( 
 &#39;0&#39; => &#39;0&#39;, &#39;1&#39; => &#39;1&#39;, &#39;2&#39; => &#39;2&#39;, &#39;3&#39; => &#39;3&#39;, &#39;4&#39; => &#39;4&#39;, &#39;5&#39; => &#39;5&#39;, 
 &#39;6&#39; => &#39;6&#39;, &#39;7&#39; => &#39;7&#39;, &#39;8&#39; => &#39;8&#39;, &#39;9&#39; => &#39;9&#39;, &#39;a&#39; => &#39;a&#39;, &#39;b&#39; => &#39;b&#39;, 
 &#39;c&#39; => &#39;c&#39;, &#39;d&#39; => &#39;d&#39;, &#39;e&#39; => &#39;e&#39;, &#39;f&#39; => &#39;f&#39;, &#39;g&#39; => &#39;g&#39;, &#39;h&#39; => &#39;h&#39;, 
 &#39;i&#39; => &#39;i&#39;, &#39;j&#39; => &#39;j&#39;, &#39;k&#39; => &#39;k&#39;, &#39;l&#39; => &#39;l&#39;, &#39;m&#39; => &#39;m&#39;, &#39;n&#39; => &#39;n&#39;, 
 &#39;o&#39; => &#39;o&#39;, &#39;p&#39; => &#39;p&#39;, &#39;q&#39; => &#39;q&#39;, &#39;r&#39; => &#39;r&#39;, &#39;s&#39; => &#39;s&#39;, &#39;t&#39; => &#39;t&#39;, 
 &#39;u&#39; => &#39;u&#39;, &#39;v&#39; => &#39;v&#39;, &#39;w&#39; => &#39;w&#39;, &#39;x&#39; => &#39;x&#39;, &#39;y&#39; => &#39;y&#39;, &#39;z&#39; => &#39;z&#39;, 
 &#39;A&#39; => &#39;A&#39;, &#39;B&#39; => &#39;B&#39;, &#39;C&#39; => &#39;C&#39;, &#39;D&#39; => &#39;D&#39;, &#39;E&#39; => &#39;E&#39;, &#39;F&#39; => &#39;F&#39;, 
 &#39;G&#39; => &#39;G&#39;, &#39;H&#39; => &#39;H&#39;, &#39;I&#39; => &#39;I&#39;, &#39;J&#39; => &#39;J&#39;, &#39;K&#39; => &#39;K&#39;, &#39;L&#39; => &#39;L&#39;, 
 &#39;M&#39; => &#39;M&#39;, &#39;N&#39; => &#39;N&#39;, &#39;O&#39; => &#39;O&#39;, &#39;P&#39; => &#39;P&#39;, &#39;Q&#39; => &#39;Q&#39;, &#39;R&#39; => &#39;R&#39;, 
 &#39;S&#39; => &#39;S&#39;, &#39;T&#39; => &#39;T&#39;, &#39;U&#39; => &#39;U&#39;, &#39;V&#39; => &#39;V&#39;, &#39;W&#39; => &#39;W&#39;, &#39;X&#39; => &#39;X&#39;, 
 &#39;Y&#39; => &#39;Y&#39;, &#39;Z&#39; => &#39;Z&#39;, &#39;(&#39; => &#39;︵&#39;, &#39;)&#39; => &#39;︶&#39;, &#39;[&#39; => &#39;︻&#39;, &#39;]&#39; => &#39;︼&#39;, 
 &#39;{&#39; => &#39;︷&#39;, &#39;}&#39; => &#39;︸&#39;, &#39;<&#39; => &#39;︽&#39;, &#39;>&#39; => &#39;︾&#39;, &#39;*&#39; => &#39;*&#39;, &#39;&&#39; => &#39;&&#39;, 
 &#39;^&#39; => &#39;︿&#39;, &#39;%&#39; => &#39;%&#39;, &#39;$&#39; => &#39;$&#39;, &#39;#&#39; => &#39;#&#39;, &#39;@&#39; => &#39;@&#39;, &#39;!&#39; => &#39;!&#39;, 
 &#39;~&#39; => &#39;~&#39;, &#39;`&#39; => &#39;`&#39;, &#39;+&#39; => &#39;+&#39;, &#39;-&#39; => &#39;-&#39;, &#39;=&#39; => &#39;=&#39;, &#39;_&#39; => &#39;_&#39;, 
 &#39;|&#39; => &#39;|&#39;, &#39;\\&#39; =>&#39;\&#39;, &#39;\&#39;&#39; =>&#39;'&#39;, &#39;"&#39; => &#39;"&#39;, &#39;;&#39; => &#39;;&#39;, &#39;:&#39; => &#39;:&#39;, 
 &#39;.&#39; => &#39;.&#39;, &#39;,&#39; => &#39;,&#39;, &#39;?&#39; => &#39;?&#39;, &#39;/&#39; => &#39;/&#39;, &#39; &#39; => &#39; &#39;, &#39;(&#39; => &#39;︵&#39;, 
 &#39;)&#39; => &#39;︶&#39;, &#39;【&#39; => &#39;︻&#39;, &#39;】&#39; => &#39;︼&#39;, &#39;《&#39; => &#39;︽&#39;, &#39;》&#39; => &#39;︾&#39; 
 ); 
 
 public $height = 10; // 默认竖排高度 
 
 /** 
 * 转换文字到竖排 
 * 
 * @return string 
 */ 
 function convert($original, $height = null) { 
 $original = preg_replace(&#39;/\s/&#39;, &#39;&#39;, $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 class="brush:php;toolbar:false">"; 
 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."
"; } /** * 转换字符串至数组 */ 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使用number_format函数截取小数的方法及实例分析

php使用pdo连接sqlite3的配置方法详解

php实现通过文件头判断格式的方法

以上がPHP中国語垂直変換プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。