質問させて下さい。
共有サーバーで複数のドメインを管理・運営しており、各ドメインのindex.htmlの内容を書換えたいと考えております。
サーバーのディレクトリ構造はこんな感じ。
public_html
|
|- sample1.com(フォルダ)
| |
| + index.html(Shint_JIS)
|
|- sample2.com(フォルダ)
| |
| + index.html(Shint_JIS)
|
|- sample3.com(フォルダ)
| |
| + index.html(Shint_JIS)
|
|- sample4.com(フォルダ)
| |
| + index.html(Shint_JIS)
|
+-un_txt.php(実行ファイル EUC-JP)
この上記構成にある、un_txt.phpというファイルにアクセスすることで、各フォルダ内にあるindex.html内の内容を書換えたいと思っているのですが、PHPはEUCで指定しており、書換えたい各htmlファイルはShift_JISとなっているためか、実行すると文字化けが発生してしまいます。
以下は現時点てのスクリプト、そのままですが、どこがおかしいのかご指摘頂くことは可能でしょうか?
<?php
$text_data = array("ホームページ", "アイフォン", "スマートフォン");
$array = scandir("./");
mb_convert_variables("EUC-JP", "SJIS", $array);
for($i=0; $i<count($array); $i++){
$name = trim($array[$i]);
$dir_name = "./".$name;
$html = "./".$name."/index.html";
if(is_readable($html)){
@chmod($html, 0606);
$addstr = file_get_contents($html);
$fp=@fopen("$html","r");
$no = '';
if($fp){
$main = "";
while (!feof($fp)){
$no++;
$main .= fgets($fp,1000);
}
}
for($m=0; $m<count($text_data); $m++){
$txt = $text_data[$m];
$no_txt = " ";
//$text_data配列に登録されているキーワードを削除。
//削除出来ないため、$no_txt では半角スペースを与えている。
$main = strtr($main, $txt, $no_txt);
}
$main = mb_convert_encoding($main,"SJIS","EUC-JP");
$fp=fopen($html, "w");
fputs($fp,$main);
fclose($fp);
}
}
以上、お忙しい中恐縮ですが、お知恵を頂戴出来れば幸いです。
宜しくお願い申し上げます。
No.1ベストアンサー
- 回答日時:
>$main = mb_convert_encoding($main,"SJIS","EUC-JP");
EUC-JPからSJISにして書き込もうとされているようですが、そもそも(SJISのファイルを読んでから)EUC-JPにしてもいないのに戻すというのが謎です。またfile_get_contentsで読んだまま$addstrを放置しているのもちょっと意図がわかりませんし、こういう置換の用途にはstrtrは使いにくいのではとも思います(マニュアルでどういう関数なのかを確認すれば、まず使わないと思うのですが。
http://jp.php.net/manual/ja/function.strtr.php
>from と to の長さが異なる場合、長い方の余分な文字は無視されます。 返される文字列の長さは、もとの str と同じになります。
マルチバイト関数を使っていないのであれば、先に$text_dataをSJISにしてしまってもいいように思います。
<?php
$text_data = array("ホームページ", "アイフォン", "スマートフォン");
mb_convert_variables('SJIS', 'EUC-JP', $text_data);
$array = glob('*', GLOB_ONLYDIR);
foreach ($array as $dir) {
$file = $dir . "/index.html";
if (!is_readable($file)) { die('not readable ' . $file); }
if (!is_writable($file)) { die('not writable ' . $file); }
$source = file_get_contents($file) or die('cannot read ' . $file);
foreach ($text_data as $text) { $source = str_replace($text, '', $source); }
file_put_contents($file, $source) or die('cannot write ' . $file);
}
shimix様
ご親切なアドバイスをありがとうございます。
また的確なご指摘をありがとうございます。
このソースですが他のソースからの流用だったため、file_get_contentsなど一部が残ったままとなっていました。
質問投稿後、見直すことで文字化けも直っておりましたが、shimix様のスマートなソースを参考に勉強させて頂こうと思います。
この度はご親切なアドバイスをありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HPを開くとダウンロードページ...
-
phpコードの戻り値をhtmlファイ...
-
VScode文字の色の変更について
-
静的 HTML 生成方法がわかりません
-
PHPのアップロードについて。FF...
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
PHPのif文でその処理を途中で抜...
-
CSV出力にHTMLが入ってしまう
-
3つ以上の論理積は利用可能なの...
-
<A href ~ と一緒に値を渡すには
-
form actionで二つ送信先を指定...
-
FTPコマンドでディレクトリごと...
-
別ファイルの変数を呼び出した...
-
セッションファイルの場所
-
【file_exists】ファイルが存在...
-
トランザクションが原因?DBに...
-
バッチを用いたフォルダの自動移動
-
.phpと.incファイルの違いはな...
-
現在位置より2つ上のディレク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
index.phpって何ですか? 具体...
-
HPを開くとダウンロードページ...
-
社内イントラネットのHPにアク...
-
PHP4対応のサーバーではinclude...
-
PHPをhtmlに読み込んだファイル...
-
携帯サイト作成する場合の.htac...
-
phpで大量のhtmlを任意の順番で...
-
public_htmlと同じ階層にあるフ...
-
sitemap.xmlファイル自動生成の...
-
拡張子をhtmlにすることのメリ...
-
phpコードの戻り値をhtmlファイ...
-
PHP 正規表現について教えて下さい
-
phpでjarファイルを実行したい
-
phpのheader関数でページ移動さ...
-
php excelダウンロード
-
htmlのテンプレートの使いまわし
-
ブラウザでPHPのソースを見る方法
-
file_get_contentsでcss読み込み
-
かなり重い処理をする方法
-
プログラムの記述のあるPHPファ...
おすすめ情報