Чат Telegram
Группа ВКонтакте
Новый комментарий


1nSide 07.05.2018 в 11:47

1 задача, сделал запись в фаил чисел от 100 до 1 и вывод их из этого файла

$file = fopen(__DIR__ . '/file4.txt', 'w');
for ($i = 100; $i>= 1; $i--) {
    fputs($file, $i . PHP_EOL);
}

$file = fopen(__DIR__ . '/file4.txt', 'r');
while (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}
fclose($file);
ivashkevich 07.05.2018 в 16:57

А зачем? Нужно было написать скрипт, который выводит свой собственный код.

1nSide 07.05.2018 в 11:49

2 задачу не понял как делать

ivashkevich 07.05.2018 в 17:00

Что именно не поняли? На каком пункте?

AnatolyMartyanov 07.05.2018 в 17:06

1 задание

<?php
$file = file_get_contents(__FILE__);
echo $file;

или

<?php
$file = fopen(__FILE__ , 'r');
while  (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}
ivashkevich 07.05.2018 в 17:09

Отлично ;)
А можно было вообще написать echo file_get_contents... без использования переменных

AnatolyMartyanov 07.05.2018 в 17:10

Понял, спасибо

lig7771991@list.ru 24.11.2018 в 10:29

Первый вариант у меня ничего не выводит на экран, только второй...

Pavel-Tonk 06.12.2018 в 01:25

У меня та же проблема.

Fellini 08.03.2019 в 00:54

Видимо потому, что браузеру передаются данные, форматированные как php-код, и тот их скрывает.
Но если открыть исходный код, то будет его показывать, хотя обычно не должен.

AnatolyMartyanov 07.05.2018 в 17:07

2 задание

$dir = '../file';
$files = scandir($dir);
foreach ($files as $file) {
    echo $file . '<br>';
}

foreach ($files as $dirr) {
    if (is_dir($dirr)) {
        echo $dirr . '<br>';
    }
}
ivashkevich 07.05.2018 в 17:08

Тут всё хорошо, но нужно использовать константу __DIR__

DmitryGavrilov 04.07.2018 в 14:54
<?php
//Выведите список всех файлов в текущей директории скрипта.
//Создайте теперь в директории со скриптом несколько папок.
//Сделайте так, чтобы в списке, выводимом программой, остались только папки.

//выводим файлы
$files = scandir(__DIR__ . '/');
foreach ($files as $file) {
echo $file . '<br>';
}

//выводим папки как папки, прокольно что есть is_dir)
$files = scandir(__DIR__ . '/');
foreach ($files as $dirr) {
    if (is_dir($dirr)) {
        echo $dirr . '<br>';
    }
}

?>
ivashkevich 06.07.2018 в 18:02

Всё хорошо.

Закрывающий тег ?> в конце не нужен.

rusgil 15.07.2018 в 10:38

Во примерах для открытия файлов и includ'ах используется DIR.
А зачем нужен абсолютный путь, почему не воспользоваться относительным?
В чем разница относительных и абсолютных путей?

ivashkevich 15.07.2018 в 10:53

Потому что константа __DIR__ содержит путь до директории с файлом, в котором она написана. А если мы внутри /index.php подключим файл в папке /inc/123.php, в котором будет ещё один include, то он сработает относительно того файла, который мы запустили, а не в котором этот include написан. То есть если в /inc/123.php будет код:

include '456.php';

То подключится не файл /inc/456.php, а /456.php. Не в одной директории с файлом где написан include, а в одной директории с файлом, к которому мы обратились (/index.php).

Использование __DIR__ эту проблему решает.

Fox-24 15.08.2018 в 12:03

Привет! Благодарю за урок!) Все супер)

1.

<?php
// Напишите программу, которая выводит свой собственный код.
// Сделайте так, чтобы в этой программе не было упоминания имени самого скрипта
// (если программа лежит в файле homework.php, то упоминания homework.php не должно быть в исходнике).

$file = fopen(__FILE__, 'r');
while (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}
fclose($file);

2.

<?php
// Выведите список всех файлов в текущей директории скрипта.
$dir = __DIR__ . '/';
$files = scandir($dir);

foreach ($files as $value) {
    echo $value . '</br>';
}

3. Тут я немного больше сделал:)

<?php
// Создайте теперь в директории со скриптом несколько папок.
// Сделайте так, чтобы в списке, выводимом программой, остались только папки.

// Массив с именами новых папок
$newfolders = ['folder-1', 'folder-2', 'folder-3'];

// Если папки еще не существуют, создаем новые
foreach ($newfolders as $folder) {
    if (!is_dir($folder)) {
        mkdir($folder, 0700);
    }
}

// Задаем директорию и получаем массив с файлами
$dir = __DIR__ . '/';
$files = scandir($dir);

// Выводит список всех папок
foreach ($files as $value) {
    if (is_dir($value))
        echo $value . '</br>';
}
ivashkevich 16.08.2018 в 21:50

Отлично =)

dom1r 21.08.2018 в 10:35
  1. Мне показалось через fgets лучше, т.к он построчно выводит, а file_get_contents через пробел
<?php
echo "hello";

$file = fopen(__FILE__, 'r');
while (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}
fclose($file);

2.

<?php
//выводит список файлов без директории
$filelist = [];

if ($handle = opendir(__DIR__)) {
    while (false !== ($entry = readdir($handle))) {
        if (is_file($entry)) {
            $filelist[] = $entry;
        }
    }

    closedir($handle);
}

print_r($filelist);
<?php
//выводит список папок
$filelist = [];

if ($handle = opendir(__DIR__)) {
    while (false !== ($entry = readdir($handle))) {
        if (is_dir($entry)) {
            $filelist[] = $entry;
        }
    }

    closedir($handle);
}

print_r($filelist);
ivashkevich 25.08.2018 в 21:31
  1. Строки схлопывает браузер, если посмотрите исходный код страницы, то увидите переносы строк. В Вашем варианте новые строки выводятся из-за ручного добавления тега <br> после каждой строки. Также можно было весь вывод обернуть в тег <pre>.
  2. Хорошо
  3. Хорошо
ArtemijeKA 11.09.2018 в 17:13
  1. $file = fopen($_SERVER['SCRIPT_FILENAME'], 'rb');
    while (!feof($file)) {
        echo fgets($file);
        echo '<br>';
    }
    fclose($file);
  2. $listFiles = array_diff(scandir(__DIR__), array('..', '.'));
    foreach ($listFiles as $fileName) {
        echo $fileName;
        echo '<br>';
    }
  3. $listFiles = array_diff(scandir(__DIR__), array('..', '.'));
    foreach ($listFiles as $fileName) {
        if (is_file($fileName)) {
            continue;
        }
        echo $fileName;
        echo '<br>';
    }

Спасибо за уроки!

ivashkevich 22.09.2018 в 09:55

Хорошо, но:

  1. для получения пути до скрипта лучше использовать константу __FILE__, так как $_SERVER['SCRIPT_FILENAME'] не всегда покажет скрипт, в котором этот код написан.
  2. вместо array(1, 2) уже давно принято использовать запись [1, 2] - переучивайтесь.
ArtemijeKA 08.10.2018 в 16:04

А когда $_SERVER['SCRIPT_FILENAME'] не покажет текущий файл? Когда вставлен в файле через require ?

ivashkevich 08.10.2018 в 23:09

Да

ArtemijeKA 10.10.2018 в 05:35

Спасибо

Benya 22.09.2018 в 18:24
<?php
$data = htmlspecialchars(file_get_contents(__FILE__));
echo $data;
ivashkevich 22.09.2018 в 20:37

Отлично!

Benya 22.09.2018 в 19:13
<?php
$files = scandir(__DIR__ . '/');
foreach ($files as $file) {
    if (is_dir($file)) {
        echo $file . '<br>';
    }
}
ivashkevich 22.09.2018 в 20:37

Супер!

SBTesla 28.09.2018 в 10:14
$file = fopen(__FILE__ , 'r');
while (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}

fclose($file);
//--------------------------------------------------

$dir = __DIR__. '/';
$file = scandir($dir);

foreach ($file as $value) {
    echo $value. '<br>';
}
ivashkevich 28.09.2018 в 23:14

Хорошо

stokato 05.11.2018 в 15:20

Напишите программу, которая выводит свой собственный код.
Сделайте так, чтобы в этой программе не было упоминания имени самого скрипта (если программа лежит в файле homework.php, то упоминания homework.php не должно быть в исходнике).

echo file_get_contents(__FILE__);

Выведите список всех файлов в текущей директории скрипта.
Создайте теперь в директории со скриптом несколько папок.
Сделайте так, чтобы в списке, выводимом программой, остались только папки.

foreach(scandir(__DIR__ . '/') as $file)
    if(is_dir($file))
        echo $file . '<br>';
ivashkevich 05.11.2018 в 21:50

1 - ОК.
2 - НЕ ОК. Используйте фигурные скобки для тела цикла и условий! Это стандарт в мире PHP. Вам рановато про это читать, но раз уж игнорируете мои комментарии, то почитайте вот это =)

stokato 07.11.2018 в 07:23
foreach(scandir(__DIR__ . '/') as $file){
    if(is_dir($file)){
        echo $file . '<br>';
    }
}

Извините, старые привычки засели глубоко)Я читал, просто не увидел)
Я читал PSR. Это у меня от другого языка въелось)

ivashkevich 08.11.2018 в 10:31

Понял, ок)

virtual2018 22.11.2018 в 14:14

задача 1

//в случае php/html файла без обработки функцией htmlspecialchars, будет пустая страница
//необходимо преобразовать в html сущности
$data = htmlspecialchars(file_get_contents(__FILE__));
echo $data;

задача 2 - список файлов

if ($array_file = scandir(__DIR__)) {
    foreach ($array_file as $index) {
        if (is_file($index)) {
            echo '<br>' . $index;
        }
    }
}

задача 2.1 - список директорий

if ($array_file=scandir(__DIR__)) {
    foreach ($array_file as $index) {
        // отсеим стандартные указатели на текущую и вышестоящую диреторию
        if (is_dir($index) && $index != '.' && $index != '..') {
            echo '<br>'.$index;
        }
    }
}
ivashkevich 22.11.2018 в 22:18

Отлично

Bogdan 27.12.2018 в 11:58

//Напишите программу, которая выводит свой собственный код.

//$file = fopen(__FILE__, 'r');
//while (!feof($file)) {
//    echo fgets($file);
//    echo '<br>';
//}
//fclose($file);

//Выведите список всех файлов в текущей директории скрипта.

$showAllFiles = scandir(__DIR__);
foreach ($showAllFiles as $value) {
    echo $value . '<br>';
}

// Сделайте так, чтобы в списке, выводимом программой, остались только папки.

$showAllDirs = scandir(__DIR__);
foreach ($showAllDirs as $value) {
    echo is_dir($value) ? $value  . '<br>': '';
}
ivashkevich 28.12.2018 в 21:09
  1. Почему все закомментировано?
  2. ОК
  3. ОК
ashfedor 11.03.2019 в 20:32
$url = $_SERVER['PHP_SELF'];

$file = fopen(__DIR__ . $url, 'r');
while (!feof($file)){
    echo fgets($file);
    echo '<br>';
}
fclose($file);
ivashkevich 11.03.2019 в 21:33

Есть константа:

__FILE__
ashfedor 11.03.2019 в 20:46
$dir = __DIR__ . '/';

foreach (scandir($dir) as $files ){
    if (is_dir($files)){
        echo $files . '<br>';
    }
}
ivashkevich 11.03.2019 в 21:34

Отлично

babls2332@gmail.com 12.03.2019 в 21:11
<?php
$file = fopen(__FILE__, 'r');
while (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}

$files = scandir(__DIR__);

foreach ($files as $dir) {
    if (is_dir($dir)) {
        echo $dir . '<br>';
    }
}
ivashkevich 14.03.2019 в 09:07

Отлично!

rashik-2009@yandex.ru 13.03.2019 в 19:58
Привет. Просто скопировал по уроку и
возникает такая ошибка, название файлов совпадает, лежит все в одной директории, могут быть еще какие то причины этой ошибки? 

Warning: fopen(C:\xampp\htdocs/file.txt): failed to open stream: No such file or directory in C:\xampp\htdocs\files.php on line 2

Warning: fgets() expects parameter 1 to be resource, bool given in C:\xampp\htdocs\files.php on line 4

Warning: fgets() expects parameter 1 to be resource, bool given in C:\xampp\htdocs\files.php on line 4

Warning: fgets() expects parameter 1 to be resource, bool given in C:\xampp\htdocs\files.php on line 4

Warning: fgets() expects parameter 1 to be resource, bool given in C:\xampp\htdocs\files.php on line 4

Warning: fclose() expects parameter 1 to be resource, bool given in C:\xampp\htdocs\files.php on line 7
ivashkevich 14.03.2019 в 09:08

C:\xampp\htdocs/file.txt - пишет, что файла такого нет. Выбрали xampp вместо OpenServer - разбирайтесь сами, что там не так, я предупреждал)

rashik-2009@yandex.ru 14.03.2019 в 19:00

Код заработал, но только через расширение PHP. Т.е. так

<?php
$file = fopen(__DIR__ . '/file.php', 'r');

Как я понял, что работает только через PHP, txt просто не видит, может это особенность работа xampp ну и ладно)).
Зато файлы он "рисует", а правильно я понимаю, что вносить информацию таким способом можно не только в txt-файлы? Можно, например, вывести текст в pdf-файл. Я попробовал, но файл почему-то не открылся((.

ivashkevich 17.03.2019 в 23:02

Потому что PDF - это не просто текст, это формат данных со специальными правилами. Про то, что якобы данные пишутся в .php-файл, но не пишутся в .txt - звучит как-то неправдоподобно. Скорее всего, есть еще что-то.

rashik-2009@yandex.ru 18.03.2019 в 10:36

Да, точно есть, на домашнем компе все работает, на рабочем (как раз на нем я это задание и пытался выполнить впервые) пишет файл не найден. Я еще когда html и css изучал заметил, что стили не работают(если их с внешнего файла подключать), что то с рабочим компом.

ivashkevich 18.03.2019 в 12:30

Вы скопируйте с рабочего компа на домашний и сравните файлы. Где-то будет отличие.

Grewi 22.03.2019 в 23:42

Первое задание:

//Выводим содержимое файла программы
$fOpen = fopen(__FILE__, 'r');

while (!feof($fOpen)) {
    echo htmlentities(fgets($fOpen)).'</br>';
}

Второе задание:

//Выводим список категорий
$dir = scandir(__DIR__ . '/work');
foreach ($dir as $a) {
    if ($a == '.' || $a == '..') { //Удаляем ненужные элементы массива
        continue;
    }
    $i = iconv('windows-1251', 'utf-8', $a); //Правим кодировку

    if (is_dir(__DIR__ . '/work/' . $a)) {
        echo '<p><strong style="color: red;">Папка: </strong>' . $i . '</p>';
    }
}

//Выводим список файлов
foreach ($dir as $a) {
    if ($a == '.' || $a == '..') { //Удаляем ненужные элементы массива
        continue;
    }
    $i = iconv('windows-1251', 'utf-8', $a); //Правим кодировку

    if (is_file(__DIR__ . '/work/' . $a)) {
        $path_parts = pathinfo($i);
        echo '<p><strong style="color:blue;">Файл: </strong>';
        echo $path_parts['filename'];
        echo '<b>.'.$path_parts['extension'].'</b>';
        echo '</p>';
    }
}

//Создаем директории из массива
$newFold = ['Папка--1', 'Папка--2', 'Папка--3'];
foreach ($newFold as $i) {
    $i = iconv('utf-8//IGNORE', 'windows-1251', $i);
    if (file_exists(__DIR__ . '/work/' . $i) == false) {
        mkdir(__DIR__ . '/work/' . $i);
    }
}

//Удаляем файлы из директории
foreach ($dir as $g){
    if(is_file(__DIR__.'/work/'.$g)){
        unlink(__DIR__.'/work/'.$g);
    }
}
ivashkevich 23.03.2019 в 22:28

Отлично разобрались! Так держать =)

Grewi 23.03.2019 в 23:55

Спасибо и за поддержку и классные уроки, но пока получается медленнее, чем хотелось. Не все сразу запоминается, иногда приходиться возвращаться к прошлым материалам и повторять. Но процесс захватывающий.

ivashkevich 24.03.2019 в 00:22

Это главное, что нравится. Остальное вообще не важно)

polvanovv 05.04.2019 в 12:48

1.

echo file_get_contents(__FILE__);

2.1

$dir = scandir(__DIR__);
foreach ($dir as $resource){
    echo $resource;
    echo '<br>';
}

2.2

$dir = scandir(__DIR__);
foreach ($dir as $folder){
    if (is_dir($folder)) {
        echo $folder;
        echo '<br>';
    }
}
ivashkevich 05.04.2019 в 14:07

Отлично

Boodoo 07.04.2019 в 20:38
<?php
    $text = htmlspecialchars(file_get_contents(__FILE__));
    echo $text;

    $arr = scandir(__DIR__);
    foreach($arr as $elem) {
        echo $elem . '<br>';
    }

    for($i=1; $i<4; $i++) {
        mkdir('folder' . $i);   
    }

    $arr = scandir(__DIR__);
    foreach($arr as $elem) {
        if(is_dir($elem)) {
            echo $elem . '<br>';
        }
    }
ivashkevich 08.04.2019 в 21:44

Отлично!

Dram 24.04.2019 в 15:33

Домашка №1 (были проблемы с кодировкой комментов, пришлось изгалиться)

<?php
//Напишите программу, которая выводит свой собственный код.
//Сделайте так, чтобы в этой программе не было упоминания имени самого скрипта
//(если программа лежит в файле index.php, то упоминания index.php не должно быть в исходнике).

$file = file_get_contents(__DIR__ . '/index.php');

$file=str_replace('index.php', '', $file);

file_put_contents(__DIR__ . '/file.txt', iconv('utf-8', 'windows-1251', $file));
ivashkevich 25.04.2019 в 07:44

Выводить код нужно в браузер. Никаких имён файлов быть не должно

Dram 25.04.2019 в 08:52
<?php
$file = file_get_contents(__DIR__ . '/index.php');

$file=str_replace('index.php', '', $file);

var_dump($file);

Скажите, пожалуйста, почему в коде выше не работает

echo $file;
print_r($file);

P.S. прошу проверить домашку в соседних уроках, я за последние дни урока 4-5 прошел вроде...

ivashkevich 25.04.2019 в 12:08

Советую вам посмотреть решения других учеников. Чтобы не использовать имя текущего файла используется константа __FILE__

artemship 30.04.2019 в 19:30
<?php

//Вывод исходного кода программы
$data = htmlspecialchars(file_get_contents(__FILE__));
echo $data;
echo '<br><br>';

//Вывод файлов
$directoryContents = scandir(__DIR__);
foreach ($directoryContents as $item) {
    if (is_file($item)) {
        echo $item . '<br>';
    }
}
echo '<br>';

//Создание папок, если их нет
$folderName = 'folder_';
for ($i = 1; $i < 4; $i++) {
    if (!is_dir($folderName . $i)) {
        mkdir($folderName . $i);
    }
}

//Вывод папок
$directoryContents = scandir(__DIR__);
foreach ($directoryContents as $item) {
    if (is_dir($item) && $item !== '.' && $item !== '..') {
        echo $item . '<br>';
    }
}
ivashkevich 02.05.2019 в 17:45

Супер!

krollik1000000@gmail.com 12.05.2019 в 22:29
$file = fopen(__file__,'r');
while(!feof($file)) {
    echo fgets($file);
}
fclose($file);

$way = scandir(__DIR__ . '/');

forEach($way as $key) {
    if (!is_file($key) && $key != '.' && $key != '..') {
       echo $key . '<br>';
    }
}
ivashkevich 12.05.2019 в 23:43

Отлично

Moskva 02.06.2019 в 21:34

1 :

$file = fopen(__FILE__, 'r'); 
while (!feof($file)){
    echo fgets($file) . '<br>';
}
fclose($file);

2.1 :

$file = scandir(__DIR__); 
foreach ($file as $string){
    echo $string . '<br>';
}

2.2 :

$file = scandir(__DIR__);
foreach ($file as $string){
    if(is_dir($string)) { 
        echo $string . '<br>';
    }
}
ivashkevich 03.06.2019 в 18:13

Супер! По первому заданию советую посмотреть еще другие решения, есть вариант в одну строку =)

Moskva 26.06.2019 в 16:31

Попробовал в 1-м задании заменить на

echo file_get_contents(__FILE__);

Не работает, эта команда запускается только когда есть этот кусок кода

while (!feof($file)){
    echo fgets($file) . '<br>';
}

Полностью так выглядит

$file = fopen(__FILE__, 'r');
while (!feof($file)){
    echo fgets($file) . '<br>';
}
fclose($file);

echo file_get_contents(__FILE__);

Ну и соответственно содержимое файла выводит дважды.

ivashkevich 27.06.2019 в 19:05

Такого быть не может. Проверьте ещё раз. Скорее всего не сохранили файл.

esqrx 14.06.2019 в 16:11

/// 1

var_dump(file_get_contents(__FILE__));
ivashkevich 15.06.2019 в 06:34

Супер!

esqrx 16.06.2019 в 01:53

// 2.1

// Можно было и без **IF** обойтись, просто вывести
// можно ли сократить условие **IF** ??

$filesDir = scandir(__DIR__);
foreach ($filesDir as $item) {
    if ($item !== '.' and $item !== '..') {
        echo $item . '<br>';
    }
}
ivashkevich 17.06.2019 в 09:56

!in_array можно, но и так норм

esqrx 16.06.2019 в 02:07

// 2.2

$filesDir = scandir(__DIR__);
foreach ($filesDir as $item) {
    if (is_dir($item)) {
        if ($item !== '.' and $item !== '..') {
            echo $item . '<br>';
        }
    }
}
ivashkevich 17.06.2019 в 09:56

Отлично

Reechniy 14.07.2019 в 15:21
дз1
<?php
$file=file_get_contents(__FILE__);
echo $file;

дз2
<?php
$file=scandir(__DIR__.'/');
foreach ($files as $file) {
    echo $file.'<br>';
}
$files=scandir(__DIR__.'/');
foreach ($files as $dirr){
    if (is_dir($dirr)){
        echo $dirr .'<br>';
    }
}
ivashkevich 14.07.2019 в 15:24

Отлично

AlexxxEy 19.07.2019 в 02:48

Задание 1.

$file = fopen( __FILE__, 'r');
while(!feof($file)){
    echo fgets($file) . '</br>';
}

Задание 2.

$file = scandir(__DIR__ . '/');
foreach($file as $files){
    echo $files . '</br>';
}

foreach($file as $files){
    if(is_dir($files))
    {
        echo $files . '</dir>';
    }
}
ivashkevich 19.07.2019 в 07:04

Отлично

Blook 28.07.2019 в 17:36

1.

$file = fopen(__FILE__, 'r');

while (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}

fclose($file);

2.

//Убираем точки с массива
$dirInfo = array_diff_assoc( scandir(__DIR__), ['.', '..'] );

foreach ($dirInfo as $subject) {
    if(is_dir($subject)) {
        echo $subject . '<br>';
    }
}
ivashkevich 28.07.2019 в 18:31

Отлично!

Dreft 02.09.2019 в 18:21

Задача 1.

var_dump(file_get_contents(__FILE__));

Задача 2.

$files = scandir(__DIR__);
foreach ($files as $file) {
    if (is_file($file)) {
        echo $file . "<br>";
    }
}

Задача 2.1

$files = scandir(__DIR__);
foreach ($files as $file) {
    if (!is_file($file) && $file != '.' && $file != '..') {
        echo $file . "<br>";
    }
}
ivashkevich 02.09.2019 в 18:51
  1. Отлично
  2. Отлично
Vladimir96 06.09.2019 в 17:54
<?php
//Задание 1
    $file = fopen(__DIR__ . '/file2.php' , 'r');

    while(!feof($file)) {
        echo fgets($file);
        echo '<br>';
    }

    fclose($file);

//Задание 2
    $fileList = opendir("C:/OSPanel/domains/textfile.loc");

    if($fileList) {       

        while($entry = readdir($fileList)){
            if (is_dir($entry)) {
                echo $entry."<br />";
            }
        }

        closedir($fileList);
    }
ivashkevich 08.09.2019 в 09:30

Всё ок, но в первом задании можно было проще - использовать функцию file_get_contents

Naskek 16.09.2019 в 13:38

описание картинки

У меня почему-то вместо текста в браузере знаки вопроса, в чем может быть проблема ?

ivashkevich 16.09.2019 в 18:49

В кодировке

Ooleg 18.09.2019 в 14:26

Это было пока что самое сложное задание, все три задания выполнил в одном файле, но первое опустил в самый конец кода. С нетерпением жду критику, задание далось тяжело и уверен, что использовал не самый оптимальный способ его выполнения.
P.S. Посмотрел как другие выполнили, слишком сложно у меня получилось и да, вариант не оптимальный.

<?php
if($handle = opendir(__DIR__)){
    echo 'Выводим список файлов';
    echo '<br>';
    while(false !== ($file = readdir($handle))) {
        if($file != "." && $file != ".."){
            echo '"' . $file . '"' . '<br>';
        }
    }
    closedir($handle);
}

echo '<br>' . 'Создаём папки и выводим их';
for ($i = 0; $i <= 2; $i++)
if (!is_dir(__DIR__ . "/" . 'dir' . $i)){
    mkdir(__DIR__ . "/" . 'dir' . $i);
}
if($handle = opendir(__DIR__)){
    echo '<br>';
    while(false !== ($file = readdir($handle))) {
        if($file != "." && $file != ".." && is_dir($file)){
            echo '"' . $file . '"' . '<br>';
        }
    }
    closedir($handle);
}

//Удаляем ненужные папки
for ($i = 0; $i <= 2; $i++)
    if (is_dir(__DIR__ . "/" . 'dir' . $i)){
        rmdir(__DIR__ . "/" . 'dir' . $i);
    }

echo '<br>' . 'Находим наш скрипт и выводим его' . '<br>';
$file = fopen('./'.$_SERVER['PHP_SELF'], 'r'); //Здесь я не до конца понял, что сделал, но работает
echo '"' . './'.$_SERVER['PHP_SELF'] . '"' . '<br>';
while (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}
fclose($file);
ivashkevich 18.09.2019 в 17:51

По выводу содержимого файла, лучше так:

echo file_get_contents(__FILE__);

Остальное ок

dliashchenko 01.10.2019 в 10:02
<?php
echo file_get_contents(__FILE__, null, null, 6, 1000) . "<br/>";

$scanDir = scandir(__DIR__);
foreach ($scanDir as $file){
    if(is_file($file)) {
        echo $file . "<br/>";
    }
}

foreach ($scanDir as $dir){
    if (is_dir($dir)){
        echo $dir . "<br/>";
    }
}
ivashkevich 01.10.2019 в 12:26

Отлично

H3licoptero 09.10.2019 в 13:08
Второе задание

$dir = __DIR__;
$displayDir = scandir($dir);
foreach ($displayDir as $file) {
    if(is_dir($file)) {
        echo $dir . '<br>';
    }
}
ivashkevich 09.10.2019 в 19:29

Отлично

Evilinside 22.10.2019 в 16:57

1ое задание ( тут решил записать данные в другой файл)

$file = copy(__DIR__ . '/files.php',__DIR__ .'/file3.txt');
file_put_contents(__DIR__ .'/file3.txt', $file);

2ое задание

$folders = ['1', '2', '3'];

foreach ($folders as $folder) {
    if (!is_dir($folder)) {
        mkdir($folder, 0777);
    }
}
$files = scandir(__DIR__ . '/');
foreach ($files as $file){
    if(is_dir($file)){
        echo $file . PHP_EOL;
    }
}
ivashkevich 22.10.2019 в 16:59
  1. Вообще не то, что требовалось в задании. Переделайте, пожалуйста.
  2. $newFiles=[]; - это для чего?
Evilinside 22.10.2019 в 17:41

1.

echo file_get_contents(__FILE__ );

2.$newFiles = []; отредактировал, почти сразу же)

ivashkevich 22.10.2019 в 18:27

Отлично

sar16520 02.11.2019 в 20:05

1

<?php
$file = file_get_contents(__FILE__);
echo $file;

2

<?php
$files = scandir(__DIR__ . '/');
foreach ($files as $file) {
echo $file . '<br>';
}

$files = scandir(__DIR__ . '/');
foreach ($files as $dirr) {
    if (is_dir($dirr)) {
        echo $dirr . '<br>';
    }
}
ivashkevich 03.11.2019 в 05:19

Отлично

zuxarevaalina88@gmail.com 13.11.2019 в 15:04

1

<?php
$file = fopen(__FILE__ , 'r');
while  (!feof($file)) {
    echo fgets($file);
    echo '<br>';

2.1

<?php
$files = scandir(__DIR__ . '/');
foreach ($files as $file) {
echo $file . '<br>';
}

2.2

<?php 
$files = scandir(__DIR__ . '/');
foreach ($files as $dirr) {
if (is_dir($dirr)) {
echo $dirr . '<br>';
}
}
ivashkevich 13.11.2019 в 17:14

Всё хорошо, только отступы куда-то потерялись. И первое задание можно было проще сделать.

Salexandr Patron 09.01.2020 в 00:54
echo htmlspecialchars(file_get_contents(__FILE__));
$dir = scandir(__DIR__);
foreach ($dir as $item) {
   echo $item . '<br>';
}
mkdir(__DIR__ . '/newDir1', 0700);
mkdir(__DIR__ . '/newDir2', 0700);
$dir = scandir(__DIR__);
foreach ($dir as $item) {
   if (is_dir($item)) {
       echo $item . '<br>';
   }
}
ivashkevich 11.01.2020 в 10:42
$dir = scandir(__DIR__);
foreach ($dir as $item){
   echo $item . '<br>';

Где закрывающая скобка?

$item){

Тут пробел потерялся

Salexandr Patron 29.01.2020 в 11:53

Поправил, спасибо, отчитал собственную невнимательность!

ivashkevich 29.01.2020 в 13:19

Теперь отлично

eNergy 15.01.2020 в 17:27
<?php
// 1
$file = fopen(__FILE__ , 'r');
while  (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}
fclose($file);
// 2
$path = scandir(__DIR__);
foreach ($path as $value) {
    echo $value . '<br>';
}
// 2.1
$path = scandir(__DIR__);
foreach ($path as $value) {
    if (is_dir($value))
    echo $value . '<br>';
}
ivashkevich 18.01.2020 в 06:11

Всё отлично. В качестве решения первого задания только могу на будущее предложить вот такой вариант:

file_get_contents(__FILE__)
YuraG 20.01.2020 в 18:08
<?php

$fd = fopen($_SERVER['SCRIPT_FILENAME'], 'r');

while (!feof($fd)) {
    $row = fgets($fd);
    echo $row . '<br>';
}

// echo file or dir
function viewDirectory(string $path, bool $viewFile = true)
{
    $dd = opendir($path);
    if ($dd) {
        while (false !== ($elemnt = readdir($dd))) {
            if ($viewFile) {
                if (is_dir($elemnt)) {
                    continue;
                }
                echo 'файл : ' . $elemnt . '<br>';
            } else {
                if (is_file($elemnt)) {
                    continue;
                }
                if ($elemnt == '.' || $elemnt == '..'){
                    continue;
                }
                echo 'Папка : ' . $elemnt . '<br>';
            }
        }
    }
}

$dir = __DIR__;

viewDirectory($dir);
echo '<br>';
viewDirectory($dir, 0);

как указать тип что в функцию передается первый параметр путь?

ivashkevich 20.01.2020 в 19:04
  1. Есть специальная константа __FILE__
    Пример более простого решения помещается в одной строке:
    echo file_get_contents(__FILE__);
  2. Код ок, а вот вопроса не понял
YuraG 21.01.2020 в 19:09

По поводу вопросу уже разобрался!
Если функция ничего не возвращает - тип возвращаемого значения можно ставить void ?

ivashkevich 24.01.2020 в 07:58

Да

ChelovekAndrey 11.02.2020 в 00:22

file_get_contents можно передать и со всеми пробелами, через str_raplace
Накопал на просторах.

<?php
\\Первое задание

$homeWorkContent = file_get_contents(__FILE__);
echo str_replace("\r\n",'<br>', $homeWorkContent);
\\Второе задание

$dir = __DIR__. '/file/';
$fileScan = scandir($dir);
foreach ($fileScan as $value){
    echo "$value <br>";
}
ivashkevich 12.02.2020 в 13:05

Отлично

kosheii@yandex.ru 22.02.2020 в 14:47

Здравствуйте, у меня проблемос
К меня даже первый пример не заработал, хотя шторм не жалуется

<?php
$file = fopen(__DIR__ . '/file.txt', 'r');
for($i = 0; $i < 4; $i++)
{
    echo fgets($file);
    echo '<br>';
}
fclose($file);

Warning: fopen(D:\OSPanel\domains\myproject.loc\www/file.txt): failed to open stream: No such file or directory in D:\OSPanel\domains\myproject.loc\www\files.php on line 2

Warning: fgets() expects parameter 1 to be resource, boolean given in D:\OSPanel\domains\myproject.loc\www\files.php on line 4

Warning: fclose() expects parameter 1 to be resource, boolean given in D:\OSPanel\domains\myproject.loc\www\files.php on line 7

Не догоняю, в чем может быть дело
Дело было в обратном слеше

ivashkevich 23.02.2020 в 19:38

Не .txt а .php

lexx115@mail.ru 21.03.2020 в 14:07

Первое задание:

echo file_get_contents(__FILE__);
lexx115@mail.ru 21.03.2020 в 15:11

Почитал комментарии, оказалось всё проще:

echo file_get_contents(__FILE__);
ivashkevich 21.03.2020 в 18:02

Ок) учитесь гуглить

ivashkevich 21.03.2020 в 18:02

Сделайте так, чтобы в этой программе не было упоминания имени самого скрипта

Не выполняется

lexx115@mail.ru 21.03.2020 в 14:08

Второе задание:

$listFiles = scandir(__DIR__);  //список всех файлов и папок в директории скрипта
foreach ($listFiles as $files) {
    echo $files . '<br>';
}

echo '<br>';

$fileList = scandir(__DIR__);
foreach ($fileList as $fileName) {
    if (is_dir($fileName) && $fileName !== '.' && $fileName !== '..') {
        echo $fileName . '<br>';
    }
}

Исправился))

ivashkevich 21.03.2020 в 18:04

$listFiles = scandir('.');

Разве так мы учились получать текущий путь до папки?

$fileList = glob('*');

Почему здесь не воспользовались scandir?

Fornit 30.03.2020 в 00:45
  1. Напишите программу, которая выводит свой собственный код.
<?php
/**
 * Created
 * by    Danila Fadeev
 * in    PhpStorm
 * for   myproject.loc
 * on    23.02.2020
 * at    12:08
 * P.S.  "Fornit Some Fornus"
 */
?>

<?php
$file = fopen(__DIR__ . '/' .basename(__FILE__), 'r');
while (!feof($file)){
    echo fgets($file) , '<br>';
}
fclose($file);
?>
  1. Выведите список всех файлов в текущей директории скрипта.
    над этим заданием я очень кропотливо трудился. просьба указать на ошибки и улучшения.
<?php
//homeworkPHP24_0.php
$showFileFromCoocie = $_COOKIE['showFiles'] ?? '';
$showDirsFromCoocie = $_COOKIE['showDirs'] ?? '';

function getDirNameWithoutSlashBefore($myDirName){
    return trim($myDirName, '/');
}

function getDirNameWithoutSlashAfterFirst($myDirName){
    /*
    $idxSlash = stripos($myDirName, '/');
    if($idxSlash !== false){

    }
    */
    $resultStrStr = strstr($myDirName, '/', true);
    if(!$resultStrStr){
        return $myDirName;
    }else{
        return $resultStrStr;
    }

}

function setFileFilterCookie(string $nameCookie, bool $bool)
{
    if (!$bool) {
        setcookie($nameCookie, '', time() - 10);
    } else {
        setcookie($nameCookie, 'checked', 0, '/');
    }
}
$createNewDirStart = '';
$resultCreateDir = '';
$showFileChecked = $showFileFromCoocie;
$showDirsChecked = $showDirsFromCoocie;
$errorDirName = '<br>';
$newDirCreated = false;
$newDirCreatePress = false;
if (isset($_POST)) {
    $newDirNameFull = $_POST['txtNewDirName'] ?? '';
    $createNewDirStart = getDirNameWithoutSlashBefore($newDirNameFull);
    if (isset($_POST['txtNewDirName'])) {//if (!($createNewDir === '')){
        $newDirCreatePress = true;
        if ($createNewDirStart === '') {
            if($createNewDirStart == $newDirNameFull){
                $errorDirName = 'Папка не создана: имя папки не должно быть пустым';
            }else {
                $errorDirName = 'Не удалось создать папку с именем "' . $newDirNameFull . '"';
            }
        } else {
            if (!(file_exists(__DIR__ . '/' . $createNewDirStart))) {
                 if(!@mkdir(__DIR__ . '/' . $createNewDirStart, 0777, true)) {
                     $errorDirName = 'Не удалось создать папку с именем "' . $newDirNameFull . '". Попробуйте другое имя.';
                     $resultCreateDir = "";
                 }else{
                     $resultCreateDir = "  <--- Успешно созданная папка";
                     $errorDirName = 'Папка "' . $newDirNameFull . '" успешно создана';
                     $createNewDirStart = getDirNameWithoutSlashAfterFirst($createNewDirStart);
                     $newDirCreated = true;
                 }

            } else {
                $createNewDirStart = getDirNameWithoutSlashAfterFirst($createNewDirStart);
                if (($createNewDirStart == '.') || ($createNewDirStart == '..')){
                    $errorDirName = 'Не удалось создать папку с именем "' . $newDirNameFull . '". Попробуйте другое имя.';
                }else {
                    $resultCreateDir = "  <--- Папка уже была создана ранее";
                    $errorDirName = 'Папка с именем "' . $newDirNameFull . '"  уже существет';
                }
            }
            $showDirsChecked = 'checked';
            setFileFilterCookie('showDirs', $showDirsChecked == 'checked');
        }
    } else {
        $showFileFromPost = $_POST['cbFiles'] ?? '';
        $showDirsFromPost = $_POST['cbDirs'] ?? '';
        $showFileChecked = ($showFileFromPost === 'showFiles') ? 'checked' : '';
        $showDirsChecked = ($showDirsFromPost === 'showDirs') ? 'checked' : '';
        setFileFilterCookie('showFiles', $showFileChecked == 'checked');
        setFileFilterCookie('showDirs', $showDirsChecked == 'checked');
    }
}

$headerFilesList = 'Список ';
if ($showFileChecked === 'checked') {
    $headerFilesList = $headerFilesList . 'файлов';
    if ($showDirsChecked === 'checked'){
        $headerFilesList = $headerFilesList . ' и папок';
    }
} else {
    if ($showDirsChecked === 'checked'){
        $headerFilesList = $headerFilesList . 'папок';
    }
}
$headerFilesList = $headerFilesList . ':';

$files = scandir(__DIR__);
$massFiltredFiles = [];
$newDirFound = false;
if(!$newDirCreatePress || $newDirCreated) {
    foreach ($files as $file) {
        if (($file != '.') && ($file != '..')) {
            if ((($showFileChecked == 'checked') && (is_file($file))) || (($showDirsChecked == 'checked') && (is_dir($file)))) {
                $massFiltredFiles[] = $file;
                if($file === $createNewDirStart){
                    $massFiltredFiles[] = $file . $resultCreateDir;
                    $newDirFound = true;
                }
                //$massFiltredFiles[] = $file . ($file === $createNewDirStart ? $resultCreateDir : '');

            }
        }
    }
    if(!$newDirFound){
        $errorDirName = 'Папка "' . $newDirNameFull . '" успешно создана, но находится в директории уровнем выше';
    }
}

$headerFilesList = (count($massFiltredFiles) == 0) ?  'Список пуст.': $headerFilesList;
?>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Список файлов</title>
</head>
<body>
<table>
    <tr>
        <td width="300">
            <form action="homeworkPHP24_0.php" method="post">
                <input type="checkbox"  name="cbFiles" value="showFiles" <?= $showFileChecked ?>>
                <label for="cbFiles">Отображать файлы</label>
                <br>
                <input type="checkbox" name="cbDirs" value="showDirs" <?= $showDirsChecked ?>>
                <label for="cbFiles">Отображать папки</label>
                <br>
                <input type="submit" name="btnShow" value="Применить фильтр">
                <br>
                <br>
            </form>
        </td>
        <td>
            <form action="homeworkPHP24_0.php" method="post">
                <label for="txtNewDirName">Введите имя новой папки</label>
                <br>
                <input type="text" name="txtNewDirName">
                <br>
                <input type="submit" name="btnCreateNewDir" value="Создать новую папку">
                <br>
                <label><?= $errorDirName ?></label>
            </form>
        </td>
    </tr>
    <tr>
        <td colspan="2">
            <?= $headerFilesList ?>
            <br>
            <?php foreach ($massFiltredFiles as $fileName){
                echo $fileName, '<br>';
            }?>
        </td>

    </tr>

</table>
</body>
</html>
Fornit 30.03.2020 в 00:47

что-то всё поехало в комменте.

ivashkevich 30.03.2020 в 09:07

Чтобы не ехало нужно в редакторе комментария оформлять код (самая первая кнопка над окном ввода коммента). Исправьте, пожалуйста, самостоятельно.

Fornit 30.03.2020 в 11:16

я так и делал.и даже редактировал. но толку нет.
редактор кода как-то на куски разрывает код.

ivashkevich 30.03.2020 в 16:00

У вас было 6 символов ``` после второго пункта, вместо 3. Исправил ваш коммент.

ivashkevich 30.03.2020 в 16:04

1.

$file = fopen(__DIR__ . '/' .basename(__FILE__), 'r');

А почему просто __FILE__ не использовали?

Закрывающий тег ?> не нужен!

Решение гораздо проще, если чуть-чуть поискать функции для чтения файлов:

echo file_get_contents(__FILE__);

2.
Сорян, не смогу подобное проверять, очень сложно. Код по заданию должен был в 5 строк выйти, эта мешанина не нужна ни вам, ни мне)

pollaltermann@gmail.com 31.03.2020 в 21:31

1

<?php
$file = fopen(__FILE__ , 'r');
while  (!feof($file)) {
    echo fgets($file);
    echo '<br>';
ivashkevich 01.04.2020 в 04:38

Не работает

pollaltermann@gmail.com 31.03.2020 в 21:33

2.1

<?php
$files = scandir(__DIR__ . '/');
foreach ($files as $file) {
echo $file . '<br>';
}

2.2

<?php 
$files = scandir(__DIR__ . '/');
foreach ($files as $dirrf) {
if (is_dir($dirrf)) {
echo $dirrf . '<br>';
}
}
ivashkevich 01.04.2020 в 04:41

Соблюдайте отступы, и оформляйте код с помощью самой первой кнопки в редакторе комментариев. По алгоритму замечаний нет.

gizbreht.e@yandex.ru 08.04.2020 в 18:21
<?php

    $hometask =  fopen(__DIR__ . '/homework.php',  'r');
    $homework = null;
    while(!feof($hometask)) {
        $homework = $homework . fgets($hometask) . PHP_EOL;
    }
    fclose($hometask);
    $format = str_replace('homework.php', 'ПОДМЕНЫШ', $homework);
    file_put_contents(__DIR__ . '/file.txt', $format);
ivashkevich 08.04.2020 в 19:22

Что-то не то, перечитайте условия задачи

gizbreht.e@yandex.ru 08.04.2020 в 18:54

Вывод содержимого директории

<?php

    $catalog_files =  scandir(__DIR__ . '/');
    $filtered_files = array_diff($catalog_files, ['.', '..']);
    $document = fopen(__DIR__ . '/file.txt', 'w');

    while($i < count($catalog_files)) {
        fputs($document, $filtered_files[$i] . PHP_EOL);
        $i++;
    }

    fclose($document);

Вывод подпапок:

<?php

    $catalog_files =  scandir(__DIR__ . '/');
    $filtered_files = array_diff($catalog_files, ['.', '..']);
    $document = fopen(__DIR__ . '/file.txt', 'w');

    while($i < count($catalog_files)) {
        if(is_dir($catalog_files[$i])) {
            fputs($document, $filtered_files[$i] . PHP_EOL);
        }
        $i++;
    }

    fclose($document);
ivashkevich 08.04.2020 в 19:28

Много ненужных действий, рекомендую ознакомиться с другими решениями в комментариях

happyviolence 10.04.2020 в 16:04

Артём, в чём может быть ошибка? Проверяю код из урока, запускаю:

<?php
$file = fopen(__DIR__ . '/file.txt', 'a');
fputs($file, 'abc' . PHP_EOL);
fclose($file);

добавляется одновременно 2 одинаковых строки вместо одной.

ivashkevich 11.04.2020 в 20:55

Плагин в браузере может в фоне ещё раз страницу загружать. Попробуйте в режиме инкогнито

studentDev Patron 11.04.2020 в 12:51
//Задание 1
<?php
   $openCode = htmlspecialchars(file_get_contents(__FILE__));
   echo $openCode . '</br>';

//Задание 2
   $files = scandir(__DIR__);

   for($i = 0; $i < 2; $i++)
   {
      array_shift($files);
   }

   foreach($files as $file)
   {
      if(is_dir($file)) {
         echo $file . '</br>';
      }
   }
ivashkevich 11.04.2020 в 21:27

Красота! Непонятно только, зачем первое задание переусложнили тегами и экранизацией как следствие

studentDev Patron 12.04.2020 в 02:57

В принципе согласен что усложнил... Буду искать альтернативные решения)
Спасибо огромное за урок :)

WarLikeLaux 11.04.2020 в 18:04

Вывод собственного кода

<?php
echo '<pre>' . htmlspecialchars(file_get_contents(__FILE__)) . '</pre>';
ivashkevich 11.04.2020 в 21:39

Вы же уже сдали одно)

WarLikeLaux 11.04.2020 в 18:11

Вывод файлов и папок отдельно

<?php
$data = scandir('./'); //is_dir()

foreach ($data as $file) {
    if (!is_dir($file)) {
        echo 'File ' . $file . "<br/>";
    } else {
        echo 'Directory ' . $file . "<br/>";
    }
}
ivashkevich 11.04.2020 в 21:40

Отлично

mornind@gmail.com 13.04.2020 в 09:43
  1. В подключаемом через require файле лежит всего одна строка - переменная $toRead со значением "DIR . '/index.php'"
    <?php
    require __DIR__ . '/whereIsMyFile.php';
    $file = fopen($toRead, 'r');
    while (!feof($file)) {
    echo fgets($file);
    echo '<br>';
    }
    fclose($file);
  2. Список всех файлов:

    <?php
    $fl = glob("*");
    echo implode('<br>', $fl);

    Отобразить только папки:

    <?php
    $fl = glob("*", GLOB_ONLYDIR);
    echo implode('<br>', $fl);
ivashkevich 13.04.2020 в 14:56

В первом решении не выполнены все условия задачи

mornind@gmail.com 13.04.2020 в 18:30

А что, собственно, не выполнено?
Код на экран выводится, имя скрипта в выводимом не фигурирует. Что я упустил?

Ну, в смысле, я понимаю, что, видимо, имелось в виду сделать вот так:

<?php
$file = fopen(__FILE__, 'r');
while (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}
fclose($file);

Но ведь вариант, который я первым сделал, тоже условия соблюдает :)

ivashkevich 14.04.2020 в 19:04

Нуу, такое себе. Вместо этого подключили файл, в котором это имя всё же содержится. По факту да, хитростью взяли) но ожидалось решение с __FILE__

mornind@gmail.com 14.04.2020 в 19:38

Согласен, я скорее потроллил баг в ТЗ (сорри, мне уже стыдно :) ).
Так или иначе, решение с __FILE__ предоставил :)

ivashkevich 14.04.2020 в 19:53

Ок)

Fill Patron 14.04.2020 в 09:52
<?php
//Программа которая выводит свой собственный код.
$file = fopen(__FILE__, 'r');
while (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}

//Вывод списока всех файлов в текущей директории скрипта.
$dirArray = scandir(__DIR__);
foreach ($dirArray as $elem) {
    if (!is_dir($elem)) {
        echo $elem . '<br>';
    }
}
//Вывод списока всех папок в текущей директории скрипта.
foreach ($dirArray as $elem) {
    if (is_dir($elem)) {
        echo $elem . '<br>';
    }
}
ivashkevich 14.04.2020 в 19:30

Отлично

X-Nick 15.04.2020 в 19:22

В уроке функции file_put_contents, file_get_contents использованы без открывания и закрывания файла. Я читал где-то, что и fputs и fgets не остро нуждаются в этом. В документации об этом ничего не нашел. Так как правильно? Для всех функций чтения/записи использовать open и close?

ivashkevich 16.04.2020 в 06:48

В документации помимо слов есть примеры использования. Разве есть в разделах про file_put_contents и file_get_contents что-то про открытие и закрытие?

n.yurasheva Patron 16.04.2020 в 23:57

1) Программа, которая выводит свой собственный код

<?php
echo '<pre>';
echo htmlspecialchars(file_get_contents(__FILE__));
echo '</pre>';

или так

<?php
echo '<pre>';
highlight_string(file_get_contents(__FILE__));
echo '</pre>';

или так

<?php
header('Content-Type: text/plain');
if ($f = fopen(__FILE__, 'r')) {
    fpassthru($f);
    fclose($f);
}

2) Выведите список всех файлов и папок

<?php
//Выводим все элементы
if ($handle = opendir(__DIR__)) {
    echo 'Элементы:'.'<br>';
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            echo $file.'<br>';
        }
    }
    closedir($handle);
}
//Выводим только папки
if ($handle = opendir('.')) {
    echo 'Папки:'.'<br>';
    while (false !== ($catalog = readdir($handle))) {
        if (is_dir($catalog) && $catalog != "." && $catalog != "..") {
            echo $catalog.'<br>';
        }
    }
    closedir($handle);
}
ivashkevich 17.04.2020 в 09:22
<?php
echo '<pre>';
echo htmlspecialchars(file_get_contents(__FILE__));
echo '</pre>';

Зачем pre и htmlspecialchars?

<?php echo file_get_contents(__FILE__);

:)

mar4ello19922@gmail.com Patron 17.04.2020 в 00:57

2 задача, 1 пункт

<?php
$fileList = scandir(__DIR__);
foreach ($fileList as $item) {
    echo $item . '<br>';
}

2 пункт

<?php
$fileList = scandir(__DIR__);
foreach ($fileList as $item) {
    if (is_dir($item)) {
        echo $item . '<br>';
    }
}
ivashkevich 17.04.2020 в 09:23
<?php echo file_get_contents(__FILE__);

:)

Timurik Patron 17.04.2020 в 17:28

1.

<?php
//Напишите программу, которая выводит свой собственный код.
echo file_get_contents(__FILE__);

2.

//Выведите список всех файлов в текущей директории скрипта.

$directory = scandir(__DIR__ . '/');
foreach ($directory as $file) {
    echo $file . '<br>';
}
//Создайте теперь в директории со скриптом несколько папок.

//Сделайте так, чтобы в списке, выводимом программой, остались только папки.

$directory = scandir(__DIR__ . '/');
foreach ($directory as $dir) {
    if (is_dir($dir)) {
        echo $dir . '<br>';
    }
}
ivashkevich 18.04.2020 в 05:51

Отличная, образцовая домашка!

Timurik Patron 18.04.2020 в 08:51

Спасибо!

tsaruk4356@gmail.com Patron 29.04.2020 в 19:57
<?php
// 1 задание

echo file_get_contents(__FILE__);

// 2 задание

$files = scandir(__DIR__);
var_dump($files);
foreach ($files as $dir) {
    if (is_dir($dir)) {
        echo $dir . '<br>';
    }
}
ivashkevich 29.04.2020 в 20:36

Супер! Вардамп только нужно было убрать перед отправкой

titelivus Patron 03.05.2020 в 06:17
  1. Вот бы еще и пробелы сохранялись)
<?php

$file = fopen(__FILE__, 'r');
while(!feof($file)) {
    $string = fgets($file);
    echo filter_var($string, FILTER_SANITIZE_SPECIAL_CHARS);
    echo '<br>';
}
fclose($file);

2.
Только файлы:

<?php

$fileList = scandir(__DIR__);

foreach ($fileList as $item) {
    if (is_file($item)) {
        echo $item;
        echo '<br>';
    }
}

Только папки:

<?php

$fileList = scandir(__DIR__);

foreach ($fileList as $item) {
    if (!is_file($item)) {
        echo $item;
        echo '<br>';
    }
}
ivashkevich 03.05.2020 в 20:57

Первое задание можно гораздо проще решить. Поищите а комментариях.
Остальные ОК.

titelivus Patron 04.05.2020 в 04:52

Пишу это в test.php

<?php 
echo file_get_contents(__FILE__);

Захожу на http://myproject.loc/test.php
И вижу пустоту. Но если посмотреть код страницы, можно увидеть этот код закомментированным. Но как так вышло?)

ivashkevich 06.05.2020 в 13:08

А какие именно комментарии?

titelivus Patron 07.05.2020 в 05:49

В коде страницы следующее:

<!--?php 
echo file_get_contents(__FILE__);-->
<html>
    <head></head>
    <body></body>
</html>
ivashkevich 08.05.2020 в 19:52

Вы ее по какому пути открываете? Через myproject.loc?

titelivus Patron 08.05.2020 в 19:55
ivashkevich 08.05.2020 в 20:34

Какое-то волшебство)

2yeezy4me Patron 06.05.2020 в 08:02

1.

<?php
echo file_get_contents(__FILE__);

2.

$showAllFiles = scandir(__DIR__);

foreach ($showAllFiles as $value) {
    echo $value . '<br>';
}
<?php
$fileList = scandir(__DIR__);

foreach ($fileList as $item) {
    if (!is_file($item)) {
        echo $item;
        echo '<br>';
    }
}
ivashkevich 06.05.2020 в 14:00

Супер!

srgolubev@gmail.com Patron 06.05.2020 в 17:45

Демонстрируем содержимое

<?php
$file = fopen(__FILE__, 'r');
while (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}
fclose($file);

Выводим список файлов

$files = scandir(__DIR__);
foreach ($files as $file) {
    echo $file . '<br>';

}

Выводим только папки

$files = scandir(__DIR__);
foreach ($files as $file) {
    if (is_dir($file)) {
        echo $file . '<br>';
    }
}
ivashkevich 07.05.2020 в 16:45

Первое задание можно гораздо проще решить. Поищите а комментариях.
Остальные ОК.

janybekova56@mail.ru 14.05.2020 в 16:42
//Задание №1

$file = fopen(__FILE__, 'r');
while (!feof($file)) {
    echo fgets($file);
    echo '<br>';
}
//Задание №2.1

$file = scandir(__DIR__);
foreach ($file as $string) {
    echo $string;
}
//Задание №2.2

$file = scandir((__DIR__));
foreach ($file as $string) {
    if (is_dir($string)) {
        echo $string . '</dir>';
    }

}
ivashkevich 15.05.2020 в 18:14

Всё отлично. В качестве варианта решения первого задания более предпочтительным будет:

<?php echo file_get_contents(__FILE__);
IePyton Patron 18.05.2020 в 12:30
//первое задание
<?php

require __DIR__ . '/24_path.php';
$file = fopen($path, 'r');
while (!feof($file)) {
   echo fgets($file);
   echo '<br>';
}
fclose($file);

//второе задание
<?php

$allFiles = scandir(__DIR__);
foreach ($allFiles as $i) {
    if (is_dir($i)) {
        echo $i . '<br>';
    }
};
ivashkevich 19.05.2020 в 06:05

Всё отлично. В качестве варианта решения первого задания более предпочтительным будет:

<?php echo file_get_contents(__FILE__);
IePyton Patron 19.05.2020 в 09:30

Я так пробовал сделать - у меня почему то выводился пустой белый экран, но при просмотре исходного кода я видел пхп код))
я не понял как вывести не в исходный код, а именно в "боевой экран"

Логические задачи с собеседований