HTML/AAはPHPのモジュールです。
	スクリプトと同じ階層か、PHPのモジュール用のパスに設置してください。
	AAはアスキーアート(Ascii Art)と同じ要領で、アスキーアジャスト(Ascii Adjust)を行います。
	このモジュールは、ブラウザに表示する文字列を整形する機能を有します。
	このモジュールは、PerlのHTML::AAモジュールの移植版です。
	UTF-8への対応も予定しておりますので、しばらくお待ちください。
	ご意見、ご感想は、モジュール内に記載されているメールアドレスまでお寄せください。
	PEARへの登録方法がよく分かりません。誰か教えて・・・
注意
	エンコードはEUC-JP、Shift_JISに対応しています。
	解説は、このページが一番詳しく、判りやすいと思います。
	文字コードが異なる場合には、正常な結果を得ることができません。
	MS Pゴシック12ポイントで表示した場合に限り、正常に表示できると予想されます。
	文字列の先頭に半角スペースが出力された場合、それが行頭になるとずれる現象が発生します。
	詳しくは、アスキーアートを紹介しているサイト等を参考にしてください。
	文字列内に半角スペースの連続が混入していないと仮定します。
構文
HTML/AAモジュールを使う準備
require_once( 'HTML/AA.php' ); $aart = new AA( ); printf( '%s Version %s', $aart -> module, $aart -> version );
PHP HTML/AA module Version 0.01
文字列の長さを求める
echo $aart -> calcu_euc( '文字列の長さを求める' );
152
文字列を文字1つの配列に分解する
echo join( '|', $aart -> divide_euc( '文字列を文字1つの配列に分解する' ) );
文|字|列|を|文|字|1|つ|の|配|列|に|分|解|す|る
調整ドットを挿入して指定したサイズに整形
// 調整ドットは左側 echo $aart -> adjust_left_euc( '左側の文字', '右側の文字', 256 ); // 調整ドットは右側 echo $aart -> adjust_right_euc( '左側の文字', '右側の文字', 256 );
左側の文字. 右側の文字 左側の文字 .右側の文字
配列を1行と見立てて、整形できる最小のサイズを求める
$ary = array( '配列の中から', '整形可能な最小のサイズを', '返します' ); echo $aart -> shorter_euc( $ary );
226
配列を1行と見立てて、指定された倍数で、整形できる最小のサイズと、何倍かを求める
$ary = array( '配列を1行と見立てて', '指定された倍数で', '整形できる最小のサイズと', '何倍かを求める' ); echo join( ':', $aart -> shorter_multiple_euc( 16, $ary, $ary ) );
400:25
サンプルスクリプト
サンプルスクリプトのEUC-JPとShift_JISはダウンロード用パッケージに同梱されています。
<html>
<head>
<style type="text/css">
<!--
  table,tr,th,td { border:1px gray solid; border-collapse:collapse; text-align:center; }
  input,textarea { margin:4px; }
  input { text-align:center; }
//-->
</style>
</head>
<body>
<?php
require_once( 'HTML/AA.php' );
$aart = new AA( );
printf( '<h1>%s Version %s</h1>', $aart -> module, $aart -> version );
?>
<h3>EUC-JPサンプル</h3>
<ul>
  <li><a href="http://penlabo.net/PHP/HTML-AA.html">HTML/AA(ぺんラボ)</a></li>
  <li><a href="HTML-AA_euc.php">EUC-JP</a></li>
  <li><a href="HTML-AA_sjis.php">Shift_JIS</a></li>
</ul>
<form action="" method="post">
<table>
<tr>
  <td>左側</td>
  <td><input type="submit" value="整形"></td>
  <td>右側</td>
</tr>
<tr>
  <td>
    <textarea name="multilineL" cols="50" rows="10" style="font-size:85%">FightAIDS@Home
Human Proteome
Discovering Dengue Drugs - Together
Rosetta@home
SIMAP
TANPAKU
proteins@home
SETI@Home
Folding@Home
CHRONOS</textarea>
  </td>
  <td>
    <input type="text" name="separate" value="│" size="2">
  </td>
  <td>
    <textarea name="multilineR" cols="50" rows="10" style="font-size:85%">HIVの新薬開発
たんぱく質構造の予測
デング熱治療薬開発プロジェクト
たんぱく質構造の予測
たんぱく質の類似性データベースの構築
たんぱく質構造の予測
たんぱく質構造の予測
地球外の知的生命を検出
たんぱく質構造の予測・アルツハイマー解析
ヒトゲノム染色体間法則性解明</textarea>
  </td>
</tr>
</table>
</form>
<div style="font-family:MS Pゴシック;font-size:12pt">
<?php
if( isset( $_POST['multilineL'] ) && isset( $_POST['multilineR'] ) ){
  aa( $aart );
}
function aa( &$aart ){
  // mb_splitにもスイッチつけれ
  mb_regex_encoding( 'EUC-JP' );
  // 改行コード除去
  $aryL = mb_split( '\x0d\x0a|\x0d|\x0a', $_POST['multilineL'] );
  $aryR = mb_split( '\x0d\x0a|\x0d|\x0a', $_POST['multilineR'] );
  // 配列の小さいほうを基準に
  $max = count( $aryL ) < count( $aryR ) ? count( $aryL ) : count( $aryR );
  $aryL = array_splice( $aryL, 0, $max );
  $aryR = array_splice( $aryR, 0, $max );
  // 最短整列ドット数
  $minL = $aart -> shorter_euc( $aryL );
  $minR = $aart -> shorter_euc( $aryR );
  // 整形
  for( $i = 0; $i < $max; $i ++ ){
    echo $_POST['separate'];
    echo $aart -> adjust_right_euc( '', $aryL[$i], $minL );
    echo $_POST['separate'];
    echo $aart -> adjust_left_euc( $aryR[$i], '', $minR );
    echo $_POST['separate'];
    echo "<br>\r\n";
  }
}
?>
</div>
</body>
</html>
│ .FightAIDS@Home│HIVの新薬開発. │ │ .Human Proteome│たんぱく質構造の予測 │ │Discovering Dengue Drugs - Together│デング熱治療薬開発プロジェクト │ │ .Rosetta@home│たんぱく質構造の予測 │ │ .SIMAP│たんぱく質の類似性データベースの構築. │ │ . TANPAKU│たんぱく質構造の予測 │ │ .proteins@home│たんぱく質構造の予測 │ │ SETI@Home│地球外の知的生命を検出 │ │ .Folding@Home│たんぱく質構造の予測・アルツハイマー解析│ │ .CHRONOS│ヒトゲノム染色体間法則性解明. │
動作サンプル
補足
	各バージョンごとに使い方が変わると思います。ご注意ください。
	使い勝手がいいとはいえません。ぼちぼち更新していくかもしれませんが、関数名が変更になる可能性があります。
	下のように、バージョンチェックをしたほうがいいかもしれません。
if( $aart -> version != 0.01 ){ echo 'The version of the HTML/AA module is different.'; }
ダウンロード
履歴
- 2008-04-07
 - サイト移動に伴うHTMLの修正(旧URI:[廃止])
 - 2007-09-16
 - Perlから移植 バージョン0.01