2017-03-20 12 views
0

PHPコードに問題があります。このループはファイル内の最後の正規表現だけを実行し、ファイル内の式の順序を変更して別の式が最後になると、この最後の式だけが実行されます。foregのpreg_replaceが正しく動作しない

foreach(file('general.txt') as $line) { 
    $text = preg_replace("/" . $line . "/", "", $text); 
} 

ファイルgeneral.txtには、テストされたすべての正規表現が含まれています。しかし、このループでは、もう動作しません。

これはなぜこのような理由が分かっていますか?私は多くのことを試してみましたが、なぜ...

あなたは次のように行をトリミングする必要があるあなたに

サイモン

+1

しよう$ lines = file( 'general.txt'); foreachに$ linesを使用します。ときにはforeachがこのようなことについて不思議です。 – Edwin

答えて

0

ありがとう把握していない:

foreach(file('general.txt') as $line) { 
    $text = preg_replace("/" . trim($line) . "/", "", $text); 
} 
+1

ありがとう、これは私のために固定:) – Simon

0

の代わりに使用してfile()関数の場合、改行シーケンスを削除するfopenstream_get_lineを使用できます。そのためには、パターンファイルで使用される改行シーケンスを知っている必要があります。 Windowsの改行配列とExemple:

$fh = fopen('patterns.txt', 'r'); 

if ($fh) { 
    $nl = "\r\n"; 
    while (false !== $line = stream_get_line($fh, 2048, $nl)) { 
     $str = preg_replace('/' . $line . '/', '', $str); 
    } 
} 

trimを超える重要な利点:あなたが開始または空白で終わるパターンを使用することができます。

関連する問題