ホームページの内容を、全角カナを半角カナにする方法を探しています。

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

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2006/09/21 13:17:48
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:technolize No.5

回答回数21ベストアンサー獲得回数3

ポイント100pt

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

 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/

id:maxikira

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

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

2006/09/21 13:16:18

その他の回答4件)

id:technolize No.1

回答回数21ベストアンサー獲得回数3

ポイント50pt

http://jp.php.net/mb_convert_kana

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

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

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

id:maxikira

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

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

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

2006/09/20 18:17:18
id:technolize No.2

回答回数21ベストアンサー獲得回数3

ポイント50pt

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

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

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

id:maxikira

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

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

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

2006/09/20 20:13:29
id:technolize No.3

回答回数21ベストアンサー獲得回数3

ポイント50pt

<?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/

id:maxikira

ありがとうございます。

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

2006/09/21 01:59:11
id:shun262 No.4

回答回数95ベストアンサー獲得回数3

ポイント10pt

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

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

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

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

id:maxikira

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

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

2006/09/21 11:21:51
id:technolize No.5

回答回数21ベストアンサー獲得回数3ここでベストアンサー

ポイント100pt

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

 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/

id:maxikira

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

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

2006/09/21 13:16:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません