人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ホームページの内容を、全角カナを半角カナにする方法を探しています。
PHPでmb_convert_kanaを利用する方法は見つけたのですが、ページの”一部の文字だけ”を変更する方法しかわかりませんでした。できれば全てを全角カナから半角カナに変換したいのですが、教えてください。

●質問者: maxikira
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP ホームページ 半角カナ
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● technolize
●50ポイント

http://jp.php.net/mb_convert_kana

携帯用に変換するのでしょうか?もう少しやりたいことの説明をいただければ回答できるんですが。。

一部だけ、というのがどのような方法を指すのかわかりませんが、渡した文字列は全部変換してくれますよ。

<?php
$str = file_get_contents('index.html');
print mb_convert_kana($str, 'k');
?>

◎質問者からの返答

ありがとうございます。ほぼやりたいことができるようになりました。

ご指摘のとおり、数10ページあるホームページを携帯用に変換したいと考えていました。今回のやりかたで1つのページ(index.html)は変換できるようになりました。

そこで、PC用サイト100ページ以上を携帯用に全角カナ⇒半角カナに変換した形にするPHPのスクリプトなどがあれば助かるのですが、ご存知でしたら教えて欲しいです。


2 ● technolize
●50ポイント

http://www.kumalab.com/soft/000053.html

そのような用途であれば、このようなソフトを利用するのがよいかと思います。

どうしても PHP で、というのであれば書いてみます(その前に他の方がよいサイト・スクリプトを紹介してくれるかもしれませんけど)。

◎質問者からの返答

ありがとうございます。非常に参考になりました。

もし可能であればPHPのスクリプトを頂けましたらと思います。mt4i(http://www.hazama.nu/pukiwiki/index.php?MT4i%2F%B5%A1%C7%BD%B2%F...)のように、出力時に自動的に全角カナを半角カナにしてもらえるようなものが理想です。

お力を貸してもらえたらと思います。


3 ● technolize
●50ポイント

<?php

mb_language('Japanese');
mb_internal_encoding('UTF-8');

$dir = dirname(__FILE__);
$dh = opendir($dir) or dir('Error: ディレクトリを開けません。');
while ( ($file = readdir($dh)) !== false ) {
$path = $dir . DIRECTORY_SEPARATOR . $file;
if ( is_file($path) && (mb_strpos($file, '.html') !== false) ) {
$mob_cont = file_get_contents($path);
$mob_cont = mb_convert_encoding($mob_cont, mb_internal_encoding(), 'us-ascii,jis,utf-8,euc-jp,sjis');
$mob_cont = mb_convert_kana($mob_cont, 'k');
$mob_file = basename($file, '.html') . '_mob.html';
$fp = fopen($mob_file, 'wb');
fwrite($fp, $mob_cont);
fclose($fp);
}
}

?>

こんな感じでしょうか。同じディレクトリにある *.html を *_mob.html に変換して保存します。

書き込み権限が必要です。

ちゃんと試してませんw。

http://www.php.net/

◎質問者からの返答

ありがとうございます。

index.htmlをindex_mob.htmlに変更し、スクリプトを記載したindex.phpを開いたところ、画面が真っ白のままです。設置の仕方が間違っているのかもしれません。素人な質問ですがどのように対処したらいいのでしょうか?


4 ● shun262
●10ポイント

Perlでいいならjcode.plのz2h_xxx(xxxは文字コード)関数を利用してみてはどうでしょうか。

http://www.aimix.jp/cgi/accjcodezh.html

ちょっと検索してみたところこのようなページが見つかりました。

参考にしてみてください。

◎質問者からの返答

ありがとうございました。

すみません、今回はPHPでお願いしたいと考えています。


5 ● technolize
●100ポイント ベストアンサー

すみません、説明が悪かったですね。少しだけ改良してみました。

 1| <?php
2|
3| $suffix = '_mob';
4| $ext = '.html';
5|
6| mb_language('Japanese');
7| mb_internal_encoding('UTF-8');
8|
9| $dir = dirname(__FILE__);
10| $dh = opendir($dir) or dir('Error: ディレクトリを開けません。');
11| while ( ($file = readdir($dh)) !== false ) {
12| $path = $dir . DIRECTORY_SEPARATOR . $file;
13| if ( is_file($path) && (mb_strpos($file, $ext) !== false) ) {
14| $mob_cont = file_get_contents($path);
15| $mob_cont = mb_convert_encoding($mob_cont, mb_internal_encoding(), 'us-ascii,jis,utf-8,euc-jp,sjis');
16| $mob_cont = mb_convert_kana($mob_cont, 'k');
17| $mob_file = basename($file, $ext) . $suffix . $ext;
18| $fp = fopen($mob_file, 'wb');
19| fwrite($fp, $mob_cont);
20| fclose($fp);
21| }
22| }
23|
24| print '処理が終了しました。';
25| ?>

$suffix に半角カナに変換したファイルの名前を設定し、 $ext に対象とする拡張子を設定します。

これで同じディレクトリの指定した拡張子のファイルが変換されます。

処理が終るとその旨wお知らせします。が、エラーチェックなどは行なっていないので、保証はできないです。

コメント出来ないのでこちらに書きます。

http://www.php.net/

◎質問者からの返答

ありがとうございました。

詳しい説明もしてもらったため、解決できそうです。本当にありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ