$file = file($dir);
$string = 'mystring';
foreach($file as $key=>$value) {
if(!strcmp($value, $string)) {
unset($file[$key]);
}
}
なぜ最後の文字列だけを設定解除し、それを修正するのですか?
前の2つに沿って、両端の空白を無視するには、これがあなたが探しているものかもしれません:
if(trim($value) !== $string) {
注: 結果の配列の各行には、FILE_IGNORE_NEW_LINES が使用されない限り、行末が含まれます。そのため、行末を表示したくない場合は、rtrim() を使用する必要があります。
したがって、次のいずれかです。
$file = file($dir,FILE_IGNORE_NEW_LINES);
または:
if(!strcmp(rtrim($value), $string)) {
おそらくうまくいくでしょう(末尾の改行が実際に最後の行まで一致しない原因であると仮定します)。
あなたが達成したいことは少し不明確です。strcmp は 2 つの文字列のみを比較し、最初の文字列が 2 番目の文字列より大きいかどうかを返します。
削除するファイルの行で選択したら、設定を解除する方法です