是否可以检查添加到文件中的字符串是否已经在文件中,然后才添加它?现在我正在使用
$myFile = "myFile.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = $var . "\n";
fwrite($fh, $stringData);
fclose($fh);
但是我得到了许多$ var值的重复,并希望摆脱它们。 谢谢
答案 0 :(得分:4)
使用此
$file = file_get_contents("myFile.txt");
if(strpos($file, $var) === false) {
echo "String not found!";
$myFile = "myFile.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = $var . "\n";
fwrite($fh, $stringData);
fclose($fh);
}
答案 1 :(得分:1)
最好的方法是使用file_get_contents
&仅当文件中没有$ var时才执行操作。
$myFile = "myFile.txt";
$file = file_get_contents($myFile);
if(strpos($file, $var) === FALSE)
{
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = $var . "\n";
fwrite($fh, $stringData);
fclose($fh);
}
答案 2 :(得分:1)
$myFile = "myFile.txt";
$filecontent = file_get_contents($myFile);
if(strpos($filecontent, $var) === false){
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = $var . "\n";
fwrite($fh, $stringData);
fclose($fh);
}else{
//string found
}
答案 3 :(得分:0)
可能的解决方案可能是:
1. Fetch the contents using fread or file_get_contents
2. Compare the contents with the current contents in file
3. add it if it is not there.
答案 4 :(得分:0)
function find_value($input) {
$handle = @fopen("list.txt", "r");
if ($handle) {
while (!feof($handle)) {
$entry_array = explode(":",fgets($handle));
if ($entry_array[0] == $input) {
return $entry_array[1];
}
}
fclose($handle);
}
return NULL;
}
你也可以这样做
$content = file_get_contents("titel.txt");
$newvalue = "word-searching";
//Then use strpos to find the text exist or not
答案 5 :(得分:0)
您可以将所有添加的字符串保存在数组中,如果已添加当前字符串,则使用in_array进行检查。
每次要写read the file时,第二个选择是strstr。{{3}}。
答案 6 :(得分:0)
我相信 fgets 就是答案。
$handle = fopen($path, 'r+'); // open the file for r/w
while (!feof($handle)) { // while not end
$value = trim(fgets($handle)); // get the trimmed line
if ($value == $input) { // is it the value?
return; // if so, bail out
} //
} // otherwise continue
fwrite($handle, $input); // hasn't bailed, good to write
fclose($handle); // close the file
此答案完全基于您在代码中添加了换行符"\n"
这一事实,这就是fgets
在此处起作用的原因。这可能比使用file_get_contents()
将整个文件拉入内存更为可取,原因很简单,因为文件的大小可能过高。
或者,如果值不是换行符分隔,但是是固定长度,则可以始终使用$length
fgets()
参数来精确地提取$n
个字符(或使用fread()
准确地提取$n
个字节)