0

str_replace は、期待どおりに機能していないようです。

テキスト ファイルがあり、ファイルの一部を削除しようとしています。

while(!feof($bodyfile)) {

    $content = @fgets($bodyfile);

    $content = str_replace("MARGIN","",$content);

(明らかに、fopen はファイルを 'r' として開くために使用されます) 奇妙なことに、M の検索と置換は機能しますか? しかし、マージンではありません..

4

3 に答える 3

4

アップデート:

fgets()関数は一度に 1 行だけを読み取り、その行を$content変数に入れることで、前の行の置換を上書きし、それを何度も繰り返します。

これを試してください:

$content = "";
while(!feof($bodyfile)) {

    $line = @fgets($bodyfile);

    $content .= str_replace("MARGIN","",$line);

したがって、このコードが行うことは、行を読み取って変数に割り当て$line、置換された文字列を$content変数に追加することです。


@関数の前に符号を追加することで、その関数が与えるエラーを抑制しています。
から削除@して@fgets、エラーがあるかどうかを確認してください。

var_dump($content)またはを試してecho $content、ファイルが正しくロードされているかどうかを確認してください。

str_replace()大文字と小文字が区別されることに注意してください。

于 2012-10-09T09:09:46.763 に答える
0

いくつかのあいまいな理由で、ファイルがUTF-8ではなくUTF-16文字エンコードであることがわかりました。変換されました。これで、私のメソッドは元々機能します。

提案してくれてありがとう

于 2012-10-09T09:36:48.343 に答える
0

あなたができる:

$str=implode("",file('somefile.txt'));
$fp=fopen('somefile.txt','w');
$str=str_replace('MARGIN','',$str);
//OR
//$str=str_ireplace('MARGIN','',$str); for case insensitivity
fwrite($fp,$str,strlen($str));
于 2012-10-09T09:19:11.017 に答える