2010年04月30日

平仮名で読むドメイン名

ムームードメインの3文字ドメイン検索を眺めていて、昔々よくやった暗号?のことを思い出した。

キーボードのアルファベットの位置にある「平仮名」を書き出すと、元のアルファベットの意味とは異なる単語が出現する。
変換テーブルを使った簡単な暗号を体験できる。
例えば、アルファベットの
「abc」は各キーの位置に表示されている平仮名を書き出すと
「らこそ」(実際にキーボードを眺めてみよう)
「ntt」だと「みかか」、「nhk」だと「みくの」という具合だ。
ドメイン名やら英文を片っ端から平仮名にすると、何か意味がある文章が出現するかもしれない(ウソだが)。
(単語レベルでは出現すると思うが、文章は滅多にありえない。意味は違うがGEBの訳者あとがきP.741を連想した)

話を元に戻そう。
3文字の英字のドメイン名ではあまり面白い単語はなさそうだが、「平仮名」読みすると意味のあるものが見つかるかもしれない。
そう思い、PHPスクリプトを書いてみた。
30分もあれば楽勝だろうと始めたが、結果は80分をかけた超大作になった(笑)
自分用のメモ、興味がある人向けなので細かい説明は無いが、自由に使ってほしい。
適当なファイル名でPHPスクリプトをUTF-8で保存して、実行するとドメイン名のリストが domain.txt (英字)
en2ja.txt (平仮名読みしたもの、SJIS)
に保存される。
(夕方作成したところドメイン名は28,734個あった)

書き忘れていたが、元データは、前述の検索画面をコピペしてテキストファイルに落として3jp.txt(UTF-8)というファイル名で保存しておいてほしい。
自動取得するプログラムを書くよりコピペの方が早そうだったので、a-z,0-9,-の37回検索をしてコピペした(面倒だった)。
これは取っておいてもいいかな、というドメイン名が何個か見つかった(取得したら、またドメイン事業者を喜ばせるだろう[笑])。
自分より先に取られると悔しいので、結果は書かないが、各自が実行し、結果を得て、行動するなら私は構わない。
なお、おそらく質問には答えられないと思うので、あしからず。

<?php
$html_fname = "3jp.txt";
$domain_fname = "domain.txt";
$en2ja_fname = "en2ja.txt";
$en="1234567890-qwertyuiopasdfghjklzxcvbnm";
$ja="ぬふあうえおやゆよわほたていすかんなにらせちとしはきくまのりつさそひこみも";
$en2ja_keys = get_keys( $en, $ja );
$html = file_get_contents( $html_fname );
$arr = explode( " ", str_replace( array( ",", "\n" ), array( " ", " " ), $html ) );
$ret = array();
$key = array();
for ( $i = 0; $i < count( $arr ); $i++ ) {
$w = strtolower( trim( $arr[ $i ] ) );
if ( stripos( $w, ".jp" ) !== false ) {
if ( ! array_key_exists( $w, $key ) ) {
$key[$w] = true;
$ret[] = $w;
}
}
}
asort( $ret );
$ja_arr = en2ja( $ret );
asort( $ja_arr );
echo count( $ret )." domains";
file_put_contents( $domain_fname, implode( $ret, "\n" ) );
file_put_contents( $en2ja_fname, implode( $ja_arr, "\n" ) );
function get_keys( $en, $ja )
{
$en = mb_convert_kana( $en, "a", "UTF-8" );
$arr = str_split( $en );
$ret = array();
$sum = count( $arr );
for ( $i = 0; $i < $sum; $i++ ) {
$ret[ $arr[ $i ] ] = mb_convert_encoding( mb_substr( $ja, $i, 1, "UTF-8" ), "SJIS", "UTF-8" );
}
return $ret;
}
function en2ja( $arr )
{
$ret = array();
$sum = count( $arr );
for ( $i = 0; $i < $sum; $i++ ) {
$ret[] = e2j( $arr[ $i ] )."(".$arr[$i].")";
}
return $ret;
}
function e2j( $str )
{
global $en2ja_keys;
$str = strtolower( $str );
$len = strpos( $str, ".jp" );
if ( $len !== false ) {
$arr = str_split( substr( $str, 0, $len ) );
$l = count( $arr );
$head = "";
for ( $i = 0; $i < $l; $i++ ) {
if ( array_key_exists( $arr[ $i ], $en2ja_keys ) ) {
$head .= $en2ja_keys[ $arr[ $i ] ];
} else {
$head .= $arr[ $i ];
}
}
$ret = $head.".jp";
} else {
$ret = $str;
}
return $ret;
}
?>

同じカテゴリー(PHP)の記事
 hetemlでupload_max_filesizeを変更 (2009-06-18 17:14)
Posted by 植物お手伝い係 at 22:21│Comments(2)PHP
この記事へのコメント
一日限定の「居酒屋 自由席」をオープンいたします。
日時は、5月20日(木)18時30分~22時前後までです。
詳しくは、「B型連盟」サークル内のトピックを見てください。
Posted by ペンペンペンペン at 2010年04月30日 23:59
ぺんぺんさん
 5月20日のご案内ありがとうございます。
中旬以降は平日の晩は仕事の都合で行けるかどうか
微妙ですが、また見てみます。
Posted by 植物お手伝い係植物お手伝い係 at 2010年05月01日 10:28
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。
削除
平仮名で読むドメイン名
    コメント(2)