2012-02-16 4 views
0

ファイルを開き、文字列がファイルに存在しないことを確認します。これを行うStrstrが真ではなく偽を返す

$fp=fopen('categories.txt','a+'); 
$content=fread($fp,filesize('categories.txt')); 

if(!strstr($content,$cat)){ 
    fwrite($fp,','.$cat); 
} 
fclose($fp); 

しかし、私が書いた後categories.txtの値を繰り返してしまいました。 問題はエンコードに問題があると思いますが、すべてのファイルはutf-8で、categories.txtにはちょうどラテン記号と記号があります。

問題はどこですか?

+1

おそらく[mb_strpos](http://php.net/manual/en/function.mb-strpos.php)を試すことができますか? – powerbuoy

答えて

0

これはfopenの問題だと思います。私はこれに変更し、コードが動作し始めます:

$content=file_get_contents('categories.dat'); 
$type=(string) $type; 
$content=(string)$content; 

if(!strstr($content,$type)){ 
    file_put_contents('categories.dat',$content.','.$type); 
} 

ありがとうございます。

2

このようにしてください。

+0

'strpos'と' mb_strpos'にも同じ問題があります。 – Narek

+0

私はそれが正常に動作するサンプルコードを試してみました。 あなたは何かを書く前に、あなたがファイルをきれいにしたことを確かめることができます。 – rajesh

+0

ええ、私はコードを実行する前に毎回ファイルをtrunclated。 – Narek

関連する問題