r
- только чтение (выводится предупреждение)r+
- чтение и запись (выводится предупреждение)w
- только запись (создается новый файл, старый перезаписывается)w+
- чтение и запись (создается новый файл, старый перезаписывается)a
- добавление данных в конец файла (создается новый файл)a+
- чтение и добавление данных в конец файла (создается новый файл)if(is_file('bbb.txt'))
{
echo 'Можете не сомневаться, bbb.txt - это файл';
}
if(is_dir('/tmp'))
echo 'действительно, /tmp - это каталог';
if(is_writable('db.dbf'))
echo 'в db.dbf писать можно';
echo 'Изменён: '.date('d.m.Y H:i:s',filemtime($file)).'<br>';
echo 'Последнее обращение: '.date('d.m.Y H:i:s',fileatime($file)).'<br>';
$kol_vo = count(file('test.txt'));
echo 'Количество ссылок в файле: '.$kol_vo.'<br>';
copy('123.jpg','images/123.jpg');
if(copy('Z:/home/site/www/file.txt', 'Z:/home/site/www/file2.txt'))
{
echo 'Копирование успешно выполнено';
}
else{
echo "Ошибка при копировании";
}
$nomer = fopen('nomer.txt', 'w+');
fwrite($nomer, 1+"$nomer");
fclose($nomer);
$file=file("my_file.txt");
$count=count($file);
echo $count;
$open=fopen("my_file.txt","a");
fwrite($open,"новая строка\r\n");
fclose($open);
$open=fopen("my_file.txt","w+");
fwrite($open,"строка\r\n");
fclose($open);
$line="1"; # строка, которую нужно удалить
$file=file("my_file.txt");
$open=fopen("my_file.txt","w");
for($i=0;$i<count($file);$i++)
{
if(($i+1)!=$line){fwrite($open,$file[$i]);}
}
fclose($open);
$line="1"; # строка, которую нужно изменить
$replace="ля ля ля"; # на что нужно изменить
$file=file("my_file.txt");
$open=fopen("my_file.txt","w");
for($i=0;$i<count($file);$i++)
{
if(($i+1)!=$line){fwrite($open,$file[$i]);}
else{fwrite($open,$replace."\r\n");}
}
fclose($open);
$file = fopen('test.txt', 'r');
while(!feof($file))
{
$line = fgets($file);
echo $line.'<br>';
}
if(file_exists('footer.html'))
{
include ('footer.html');
}
$file = fopen('test.txt', 'r');
$line = fgets($file);
$line = fgets($file, 5);
$line = file_get_contents('test.txt', 1);
$oneLine = fopen('test.txt', 'r');
for($i = 1; $i <= 10; $i++)
{
$line = fgets($oneLine); //читаю первую строку
echo "$i. $line<br>";
}
$f = file('test.txt');
$stroka = $f[1];
echo $stroka;
unlink('1.txt');
if(!file_exists('test.txt'))
{
echo 'Файл test.txt не найден';
}
else{
echo 'Файл test.txt обнаружен';
}
if (file_exists('example.png')) {
// File exists
}
$filesize = filesize($file);
echo "–азмер файла: $filesize байт.<br>";
$filetype = filetype($file);
echo "Тип файла: $filetype<br>";
$pathinfo = pathinfo($file);
echo '<pre>';
var_dump($pathinfo); //массив
echo '</pre>';
$file = 'list.txt';
$string = 'Ёто строка, которую надо удалить';
$ftmp = fopen('tmp.txt', 'w');
$f = fopen($file, 'r');
while (!feof($f)) {
$str = fgets($f);
if ($str != $string)
fwrite($ftmp, $str);
}
fclose($f);
fclose($ftmp);
rename ('tmp.txt', $f);
$string = 'удаляемая строка';
$file = file('text.txt');
for ($i=0;$i<count($file);$i++)
{
if(trim($file[$i])==$string) unset($file[$i]);
}
print_r($file);
$h = fopen('text.txt',"w");
fwrite($h, implode("",$file));
fclose($h);
$line=2; # строка, которую нужно удалить
$file=file('file.txt');
$open=fopen('file.txt','w');
for($i=0;$i<count($file);$i++)
{
if(($i+1)!=$line){fwrite($open,$file[$i]);}
}
fclose($open);
$z = '12345';
$array=file('file.txt','w');
$array[2]=$z; // записываю в третью строку массива переменную
$f=fopen('file.txt');
for ($i=0; $i<count($array); $i++)
{
fputs($f,$array[$i]);
}
fclose($f);
$file=file('file.txt');
unset($file[0]);
$fp=fopen('file.txt','w');
fputs($fp,implode("",$file));
fclose($fp);
$file=file("text.txt"); # будем считывать строки с файла text.txt
$strings="5"; # количество считываемых строк
for($i=0;$i<$strings;$i++)
{
$string.=$file[$i];
}
echo $string;
$file=file("text.txt"); # будем считывать строки с файла text.txt
$strings="5"; # количество считываемых строк
for($i=count($file)-$strings;$i<count($file);$i++)
{
$string.=$file[$i];
}
echo $string;
$word="привет"; # искомое
$file="file.txt"; # имя файла, в котором будем искать слово привет
$open=fopen($file,"r");
while(!feof($open)) $search.=fgets($open,1024);
fclose($open);
if(eregi(strtolower($word),strtolower($search)))
{
echo "Слово ".$word." - найдено";
}
else
{
echo "Слово ".$word." - не найдено";
}
$file="base.txt"; # файл, в которой добавляем нужную нам строку
$line="5"; # строка, на которую вставляем новые данные
$data="новая строка"; # данные новой строки
$array=file($file);
$open=fopen($file,"w");
while(list($num,$string)=each($array))
{
if(($num+1)==$line) fwrite($open,$data."\r\n");
fwrite($open,$string);
}
fclose($open);
$file="base.txt"; # имя файла, где хранятся фразы
$array=file($file);
echo $array[rand(0,count($array)-1)];
echo filesize($_SERVER['SCRIPT_FILENAME']).' байт';
$zip = new ZipArchive;
$file = $zip->open('file.zip');
if ($file) {
$zip->extractTo('/extract_path/');
$zip->close();
echo 'Archive extracted!';
}
Существенно, что touch
создаст файл, если он не существует:
$filename = 'input.txt';
$mtime = filemtime($filename); //получить время изменения файла
touch($filename,
time(), //установить время изменения в текущее
fileatime($filename)); //оставить время доступа неизменным
Скачать файл скриптом (скачивается файл data.zip
из папки на сервере folder
, но пользователь не видит пути к файлу.
В нашем случае для домена domain.com
это путь http://domain.com/folder/file.zip
. Также не стоит забывать о возможности защиты папок от просмотра с помощью файла .htaccess):
$filename = 'data.zip'; //имя файла для скачивания
$filefolder = 'folder/'; //имя папки
$filesize = filesize($filefolder.$filename);
header('HTTP/1.1 200 OK');
header('Connection: close');
header('Content-Type: application/octet-stream');
header('Accept-Ranges: bytes');
header('Content-Disposition: attachment; filename='.$filename);
header('Content-Length: '.$filesize);
readfile($filefolder.$filename);
Если файлы лежат в папке, которую можно задать указанием пути и маски, удобна функция preg_replace_callback
(здесь мы делаем большими все латинские буквы в файлах *.txt из текущей папки скрипта):
foreach (glob("./*.txt") as $filename) {
$file = file_get_contents($filename);
file_put_contents ($filename,
preg_replace_callback("/([a-zA-Z]+)/",
function ($matches) { return strtoupper($matches[0]); },
$file));
}
$file = fopen(__FILE__, 'r');
while ($line = fgets($file)) {
$line = rtrim($line);
echo htmlspecialchars($line)."<br>\n";
}
При этом выводе мы дополнительно игнорируем пустые строки:
$file = fopen('input.txt', 'r');
while (!feof($file)) {
$line = rtrim(fgets($file));
if ($line) echo (htmlspecialchars($line)."<br>\n");
}
rename('input.txt', 'output.txt');
$f = tmpfile();
//работа с файлом $f:
fwrite ($f, 'abracadabra');
fseek ($f, 0);
echo fread ($f, 1024);
fclose($f); //будет удалён при закрытии
$url = 'http://example.com/file.json';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
$result = curl_exec($curl);
curl_close($curl);
$result = file_get_contents('file.json');
$string = file_get_contents('file.json');
$json = json_decode($string, true);
// $json['name'] etc...
$array = array('name' => 'David', 'age' => 27);
$string = json_encode($array);
echo $string; // { "name" : "David", "age" : 27 }
if($_SERVER['SCRIPT_NAME'] == '/tema/header.php')
{
header('Location: /');
}
include('config.php');
include($_SERVER['DOCUMENT_ROOT'].'config.php');
echo "<meta http-equiv='Expires' content='Mon, 26 Jul 1997 05:00:00 GMT' />
<meta http-equiv='Pragma' content='no-cache' />";
nocache_headers();
sleep(10);
$filename = '/tmp/test.txt';
if(is_writable(dirname($filename))){
if(!$df = fopen($filename, 'w')){
throw new \Exception('Can not open the file');
}
if(flock($df, LOCK_EX)){
if(fwrite($df, "TEST") === FALSE) {
throw new \Exception('Can not write to the file');
}
flock($df, LOCK_UN);
fclose($df);
}
else{
throw new \Exception('Can not lock the file');
}
}
else{
throw new \Exception('The directory is forbidden');
}
$filename = '/tmp/test.txt';
if(is_readable($filename)){
if(!$df = fopen($filename, 'r')){
throw new \Exception('Can not open the file');
}
// Если файл заблокирован для записи
if(flock($df, LOCK_SH)){
// Чтение строки за строкой
while(($str = fgets($df, 4096)) !== false ){
echo $str . PHP_EOL;
}
// Чтение символа за символом
// while(($str = fgetc($df)) !== false ){
// echo $str;
// }
// Чтение текста заданной длины
// echo fread($df, filesize($filename)) . PHP_EOL;
flock($df, LOCK_UN);
fclose($df);
}
else{
throw new \Exception('Can not lock the file');
}
}
else{
throw new \Exception('File is forbidden or not exists');
}
var_dump(feof(fopen('/tmp/test.txt', 'w')));
var_dump(file('/tmp/test.txt'));
var_dump(file('http://google.com/'));
readfile('/tmp/test.txt');
echo PHP_EOL;
fpassthru(fopen('/tmp/test.txt', 'r'));
echo PHP_EOL;
var_dump(filesize('/tmp/test.txt'));
var_dump(dirname('/tmp/test.txt'));
$df = tmpfile();
$f1 = scandir('/tmp');
$f2 = glob('*.php');
$f3 = glob('*.{php,txt}', GLOB_BRACE);
$f4 = glob('/tmp/a*.jpg');