[PHP-users 18150]Re: 縦書き変換スクリプト

Hidetoshi Tsuchiyama tutiyama @ powerkit.co.jp
2003年 10月 1日 (水) 11:52:14 JST


   土山です。

   $char を毎回初期化してあげれば良いと思います。

foreach($div_rows as $value){
    $char = array();    // <- ここに移動
    $chars_few = mb_strlen($value);

> こんにちは、大原です。
> 
> 現在、ユーザが投稿した文章を縦書きに変換するスクリプトを作成しています。
> しかし、行き詰まってしまったのでお知恵を拝借いたしたく投稿します。
> お仕事のおじゃまになりましたら、恐縮です。
> 
> //<--本文整形
> $honbun = htmlspecialchars($_POST["honbun"], ENT_NOQUOTES);
> $honbun = mb_convert_kana($honbun, ASKV);
> $honbun = preg_replace("/[\r\t]/", "", $honbun);
> //-->
> //<--行に分割
> $div_rows = preg_split("/[\n]/", $honbun);
> //-->
> //<--文字に分割
> $char = array();
> $row = array();
> $max_chars_few = 0;
> $j = 0;
> foreach($div_rows as $value){
>     $chars_few = mb_strlen($value);
>     for($i =0; $i < $chars_few; $i++)$char[$i] = mb_substr($value, $i, 1);
>     $row[$j] = $char;
>     if($max_chars_few < $chars_few)$max_chars_few = $chars_few;
>     $j++;
> }
> //-->
> 
> 以上のようなスクリプトを作成したのですが、
> 文字が上手く配列に入ってくれません。
> 具体的には以下のような感じです。
> 
> $_POST["honbun"] = あいうえお ←の場合
> $row[0]$char[0] = あ
> $row[0]$char[1] = い
> $row[0]$char[2] = う
> $row[0]$char[3] = え
> $row[0]$char[4] = お
> 
> $_POST["honbun"] = あいうえお
>                    123        ←の場合
> $row[0]$char[0] = 1
> $row[0]$char[1] = 2
> $row[0]$char[2] = 3
> $row[0]$char[3] = え
> $row[0]$char[4] = お
> $row[1]$char[0] = 1
> $row[1]$char[1] = 2
> $row[1]$char[2] = 3
> $row[1]$char[3] = え
> $row[1]$char[4] = お
> 
> となってしまうのです。
> 配列のポインタの動かし方に問題があるのかと思うのですが、
> 一人で考えていて煮詰まってしまいました。
> お力添えいただければ幸いです。
> 
> ♪☆★☆★☆※☆★☆★☆♪
> 大原 美樹
>   o-hara.miki @ pop-cute.net
> ♪☆★☆★☆※☆★☆★☆♪

                                                     土山 英俊
                                            (有)パワーキット
                                       tutiyama @ powerkit.co.jp




PHP-users メーリングリストの案内