PHP・コマンドプロンプトについての質問です。


Windowsコマンドプロンプトにて、renameコマンドを使いファイルの一括名前変更を行いたいと思っています。
そこでphpを使い、

<?php
/* ファイルポインタをオープン */
$new = fopen("li.txt", "r");
$old = fopen("moto.txt", "r");


/* ファイルを1行ずつ出力 */
if($new){
while ($nline = fgets($new)) {
$oline = fgets($old);

$results = shell_exec("rename '".$oline."' '".$nline."'");

echo $results;
}
}

/* ファイルポインタをクローズ */
fclose($new);
fclose($old);


このようにして変更前後の名前のファイルを別で用意しそれぞれを読み込み
変更しようとしているのですが、コマンドプロンプトでは構文エラーとなります。

そこで試しに("rename '".$oline."' '".$nline."'")部分だけをエコーで出力してみたところ
$olineと$nlineの間に改行のようなものが入っていることがわかりました。
しかしその原因がわかりません。

どなたか解決できる方はいらっしゃらないでしょうか?
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/10/11 16:24:16

ベストアンサー

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154

PHPでfgets()を使って一行ずつ呼び出すときには,取得した文字列の最後に改行コードが付加されている.改行を削除する場合にはrtrim()を使うとよい.
 

あくまでコピペですから [覚書][PHP]fgets()したときの改行コード

ですって。
PHP: rtrim - Manual

id:los19

なるほど!なるほど!ありがとうございます!
URLもとても参考になりました!ありがとうございました^^

2014/10/11 16:24:07

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

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

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

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

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