こんばんは。お世話になっております。
先日、http://oshiete1.goo.ne.jp/qa4940684.html こちらにて別ファイルにある文字列を変数に代入することをお教えいただきました。(今回の件とは直接的に関係ないと思うのですが・・)
今回再度質問させて頂きたいのは、変数に代入されているテキスト(改行を含まない一行テキスト)を、違う別のファイルに登録されている単語を削除したい。というものです。
その別ファイル(削除すべき単語が登録されているファイル)は、
1
2
3
、
。
のように登録されていており、削除する際、
//変数、$moto_txtに長文の1行テキストが代入されてる。
$file_name = "./data/key.txt";//排他単語の取得
if(file_exists($file_name)){
$f_data_array = file($file_name);
$f_cnt= count($f_data_array);
for($h=0; $h<$f_cnt; $h++){
$delete_key = trim($f_data_array[$h]);
$moto_txt = str_replace($delete_key, "", $moto_txt);//
}
}
のように、削除したい単語が登録されているファイルを単語単位で配列に格納し、for文で$moto_txtからstr_replace()を使って削除しようとすると、何故か他の文字(今確認しているのは、「ア」です)まで削除されてしまう状況となっております。
何か他の方法はないかな?と色々と調べているのですが、その方法が分からず、また、上記の流れで、何故他の単語まで削除されてしまうのかが分かりません。
どんな些細なことでも結構ですので、アドバイスいただけると幸いです。
No.1ベストアンサー
- 回答日時:
文字列の置換を行うのであれば、質問にもありましたように、str_replaceを使う事で対応できると思います。
両ファイルの文字コード,プログラムファイルの文字コードは統一されてますか?
また、インストールされていればmb_ereg_replaceなどのマルチバイト関数を使用する事もできるかと思います。
参考URLはマルチバイトの対応について書かれています。
ご参考になればどうぞ。
あと、for文よりもforeach文の方が処理が早いですよ!!
参考URL:http://fetus.k-hsu.net/document/programming/php/ …
a0205s様
こんばんは。早速のご回答を有難う御座います。
質問投函後、色々と見直したところ、登録単語を保存する際、不適切な書き込みを行っていました。
いずれにせよ、削除するための関数に自信がなかった(他に良い方法があるのでは?と)ため、a0205s様のお言葉で安心しました。
(foreach文の方が処理が早いですよ!!このアドバイスにも感謝いたします!)
ご丁寧なアドバイスを有難う御座いました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Java 動かなくなったのでJavaソースを手直しお願いします。 2 2022/04/30 05:35
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
.txtではなく.logの方が良いの...
-
Windowsのバッチファイルを利用...
-
拡張子を元に戻す
-
COPYコマンドで結合すると余計...
-
テキストファイルで提出とは?
-
renameコマンドについて
-
VBAでエクセルをtxtに変換する...
-
バッチファイル 複数ファイル...
-
psqlでエラーログをとりたい
-
日本語名ディレクトリーから日...
-
Windows版のgzipについて
-
C#でcabファイルをつくる2
-
バッチファイルで文字列削除に...
-
MS-DOSのバッチファイルの中で...
-
VBSで、テキストファイルに対し...
-
ファイル内容の修正、行削除に...
-
accessでSQL文を使ってcsvファ...
-
javaでemlファイルからtxtファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
拡張子を元に戻す
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
.txtではなく.logの方が良いの...
-
txtのファイルから編集してもい...
-
バッチファイルで文字列削除に...
-
Windowsのバッチファイルを利用...
-
バッチファイル 複数ファイル...
-
ファイルの最後に文字列挿入
-
テキストファイルのファイル名...
-
psqlでエラーログをとりたい
-
forfilesで検索したファイルを...
-
renameコマンドについて
-
accessでSQL文を使ってcsvファ...
-
コマンドプロンプトでスペース...
-
ファイルを処理中に次の処理に...
-
UWSCでテキストファイルを開い...
-
バッチファイルからVBAに引数を...
おすすめ情報