Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 3
Регистрация: 01.01.2018
Сообщений: 164

Не работает сравнение строк

23.06.2025, 12:58. Показов 1269. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

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

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$ignore = array();
if (file_exists("IgnoreFiles.txt"))
{
    $file = fopen("IgnoreFiles.txt", "r");
    while(!feof($file))
    {
        $string = fgets($file);
        $string = str_replace(' ', '', $string);
        array_push($ignore, strtolower($string));
    }
 
function getDirs($path)
{
    $temp = scandir($path);
    $temp_array = array();
    for ($i = 2; $i < count($temp); $i++)
        if (is_dir($path."\\".$temp[$i]))
        {
            $ignored = false;
            
            if (!empty($GLOBALS['ignore']))
                for ($a = 0; $a < count($GLOBALS['ignore']); $a++)
                {
                    if ($path."\\".$temp[$i] == $GLOBALS['ignore'][$a])
                    {
                        $ignored = true;
                        break;
                    }
                }
            if (!$ignored)
            {
            array_push($temp_array, $path."\\".$temp[$i]);
            $dirs = getDirs($path."\\".$temp[$i]);
            for ($n = 0; $n < count($dirs); $n++)
            if (!is_array($dirs[$n]))
                array_push($temp_array, strtolower($dirs[$n])); 
            else
                for ($f = 0; $f < count($dirs[$n]); $f++)
                    array_push($temp_array, strtolower($dirs[$n][$f])); 
            }
        }
    
    return $temp_array;
}
Добавлено через 12 минут
Полный код и текстовый файл

Кликните здесь для просмотра всего текста

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
$ignore = array();
if (file_exists("IgnoreFiles.txt"))
{
    $file = fopen("IgnoreFiles.txt", "r");
    while(!feof($file))
    {
        $string = utf8_encode(fgets($file));
        $string = str_replace(' ', '', $string);
        array_push($ignore, strtolower($string));
    }
    print_r($ignore);
    echo "<br>";
}
 
function getDirs($path)
{
    $temp = scandir($path);
    $temp_array = array();
    for ($i = 2; $i < count($temp); $i++)
        if (is_dir($path."\\".$temp[$i]))
        {
            $ignored = false;
            
            if (!empty($GLOBALS['ignore']))
                for ($a = 0; $a < count($GLOBALS['ignore']); $a++)
                {
                    if (utf8_encode($path."\\".$temp[$i]) == $GLOBALS['ignore'][$a])
                    {
                        $ignored = true;
                        //echo "<br>".$GLOBALS['ignore'][$a]." = ". $path."\\".$temp[$i];
                        break;
                    }
                }
            if (!$ignored)
            {
            array_push($temp_array, $path."\\".$temp[$i]);
            $dirs = getDirs($path."\\".$temp[$i]);
            for ($n = 0; $n < count($dirs); $n++)
            if (!is_array($dirs[$n]))
                array_push($temp_array, strtolower($dirs[$n])); 
            else
                for ($f = 0; $f < count($dirs[$n]); $f++)
                    array_push($temp_array, strtolower($dirs[$n][$f])); 
            }
        }
    
    return $temp_array;
}
 
function getFiles($path)
{
    $temp = scandir($path);
    $temp_array = array();
    for ($i = 2; $i < count($temp); $i++)
        if (!is_dir($path."\\".$temp[$i]))
            array_push($temp_array, strtolower($path."\\".$temp[$i]));
        
    return $temp_array; 
}
 
function checkIgnoreFiles($files)
{
    $files_temp = array();
    for ($i = 0; $i < count($files); $i++)
    {
            $ignored = false;
            if (!empty($GLOBALS['ignore']))
                for ($a = 0; $a < count($GLOBALS['ignore']); $a++)
                    if ($files[$i] == $GLOBALS['ignore'][$a])
                        $ignored = true; 
 
            if (!$ignored)
                array_push($files_temp, $files[$i]);
    }
    return $files_temp;         
}
 
 
$dirs = getDirs("client");
array_unshift($dirs, "client");
$files_temp = array();
$files_r = array();
 
 
if (count($dirs) != null)
    for ($i = 0; $i < count($dirs); $i++)
    {
        $files_f = getFiles($dirs[$i]);
        if (!is_array($files_f))
            array_push($files_r, $files_f);
        else
            for ($n = 0; $n < count($files_f); $n++)
                array_push($files_r, $files_f[$n]);
    
    }
    
$files_r = checkIgnoreFiles($files_r);
 
 
print_r($dirs);


Кликните здесь для просмотра всего текста

client\data
client\data\art\intrface
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.06.2025, 12:58
Ответы с готовыми решениями:

Не работает сравнение строк
Следующий код ничего не выводит: $text = &quot;Пример текста&quot;; for($i; $i &lt; strlen($text); $i++) {...

Сравнение строк в двух файлах
Есть два txt файла, надо их сравнить и произвести удаление строк из первого файла, если во втором...

сравнение строк
Здравствуйте есть такая проблема есть текстовый файл test.txt и есть скрипт который вытаскивает...

2
 Аватар для andrey_f
883 / 536 / 228
Регистрация: 21.02.2011
Сообщений: 5,706
24.06.2025, 15:04
я бы здесь еще trim делал бы при сравнении строк и DIRECTORY_SEPARATOR вместо ""
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
30.06.2025, 11:56
Даже не при сразнении, при загрузки списка
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
$ignore = [];
if (file_exists("IgnoreFiles.txt")) {
    $file = fopen("IgnoreFiles.txt", "r");
    while (!feof($file)) {
        $string = utf8_encode(fgets($file));
        $string = str_replace(' ', '', $string);
        array_push($ignore, strtolower($string));
    }
    //print_r($ignore);
    //echo "<br>";
}
 
var_dump($ignore); die();
Тут в первном элементе в конце какая-та шляпа, похоже на перенос строки
array(2) {
[0]=>
string(12) "client\data
"
[1]=>
string(24) "client\data\art\intrface"
}
Зачем там вообще while, просто через file
PHP
1
2
3
4
$ignore = array_map(fn(string $item) => trim($item), file("IgnoreFiles.txt"));
 
var_dump($ignore);
die();
array(2) {
[0]=>
string(11) "client\data"
[1]=>
string(24) "client\data\art\intrface"
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.06.2025, 11:56
Помогаю со студенческими работами здесь

Регулярное выражение - сравнение двух файлов и замена значений строк
Привет всем. Как и многие не понимаю регулярки. Есть два файла, land_en и land_ru. Нужно заменить...

Сравнение строк в php
Здравствуйте ув. форумчане. Прочитав кучу информации так и не смог додумать. Собственно: Имеется...

Неточное сравнение строк
Есть текстовый файл со строками: ... 10101010010010|V 11100011010010|W 10110110110101|X...

Сравнение строк UTF-8
Здравствуйте! Столкнулся вот с какой проблемой! Получаю курлом html-контент, регуляркой беру...

Сравнение строк из разных БД
вверху страницы идёт извлечение даннных из таблицы &quot;A&quot; &lt;?php $res1 = mysql_query(&quot;SELECT...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru