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
$utf8_str = <<<HERE
こんにちは みなさん おげんき ですか? わたしは げんき です。
この ぶんしょう は いぎりす の ケンブリッジ だいがく の けんきゅう の けっか
にんげん は もじ を にんしき する とき その さしいょ と さいご の もじさえ あっていれば
じゅんばん は めちゃくちゃ でも ちゃんと よめる という けんきゅう に もとづいて
わざと もじの じゅんばん を いれかえて あります。
どうです? ちゃんと よめちゃう でしょ?
ちゃんと よめたら はんのう よろしく
HERE;
echo Cmabrigde( $utf8_str, 'UTF-8' );

function Cmabrigde( $text, $enc )
{
    $ret = '';
    $lines = explode( "\n", $text );
    foreach ( $lines as $line ) {
        $words = explode( ' ', trim($line) );
        foreach ( $words as $word ) {
            $len = mb_strlen( $word, $enc );
            if ( 3 <  $len ) {
                $head = mb_substr( $word, 0, 1, $enc );
                $body = mb_str_shuffle( mb_substr( $word, 1, $len-2, $enc ), $enc );
                $foot = mb_substr( $word, $len-1, 1, $enc );
                $word = $head.$body.$foot;
            }
            $ret .= $word.' ';
        }
        $ret = rtrim( $ret )."\n";
    }
    return $ret;
}

function mb_str_shuffle( $str, $enc )
{
    $buff = array();
    while ( $len = mb_strlen( $str, $enc ) ) {
        $buff[] = mb_substr( $str, 0, 1, $enc );
        $str = mb_substr( $str, 1, $len, $enc);
    }
    shuffle( $buff );
    return implode( '', $buff );
}