[PHP-users 30164] Re: 半角文字列、全文字置換したい。

KOYAMA Tetsuji koyama @ hoge.org
2006年 8月 28日 (月) 19:15:53 JST


小山です。

On 8/28/06, yusuke ito <ito.ysk @ gmail.com> wrote:
> define('FROM', '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
> define('TO', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz');

この辺は

$from = implode('', array_merge(range('0', '9'), range('a', 'z'),
range('A', 'Z')));
$to= implode('', array_merge(range('A', 'Z'), range('0', '9'),
range('a', 'z')));

のように書けます。

以下余談:

置き換えも str_replace でできると思うんですが、今試したらどうも
バグってるくさい。

$from = range('A', 'Z');
$from[] = 'a';

$to = array_merge(range('0', '9'), range('a', 'z'), range('A', 'Z'));

$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$result = str_replace($from, $to, $str);
var_dump($result);

$from に 'a' を追加しなければ大丈夫ですが、追加すると結果が
おかしくなります。

結果:
// $fom[] = 'a'; なし
string(26) "0123456789abcdefghijklmnop"

// $fom[] = 'a'; あり
string(26) "0123456789qbcdefghijklmnop"

-- 
    小山哲志@ビート・クラフト
    koyama @ beatcraft.com
    koyama @ hoge.org


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