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

Задача на подключение файла

29.10.2013, 17:46. Показов 832. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Нужна помощь в виде объяснения как сделать или решение...
Была задача - подключался txt файл с неким чатом, где логины отделялись от текста двоеточием... Нужно было раскрасить логины в разные цвета, но при условии, что в строках могут быть смайлы или же просто повторяться двоеточие ': )'. При чтении файла появилось проблема - каждому новому логину давался новый ключ, и соответственно новый цвет, чего требовалось избежать.
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
<?php
$file = @fopen('F:\Web\USBWebserver v8.5\8.5\root\study\chat.txt', 'rt');
    if($file === FALSE) {
        echo 'Ошибка при открытии файла';
        exit();
    } # if error
    
$l = 0;                                             # l - ключ для логина
$t = 0;                                             # t - ключ для строки текста
$c = 0;                                             # c - маркер длинны файла
 
    while ($str = fgets($file)) {               #разбиваем текст построчно массивы с на логин и текст
        list($login[$l], $text[$t]) = explode(':', $str);
        ++$l;
        ++$t;
        ++$c;
    }
        
$l = 0; 
$t = 0;                                                 #возвращаем маркер на начало массов
 
    for ($i = 0; $i < $c; ++$i) {               #красим массивы (по факту можно засувать и в while, разбил для простоты чтения)
        $color = rand(000000, 999999);
        $login[$l] = "<span style=color:$color>$login[$l]</span>";
        echo "$login[$l]".':'."$text[$t]"."<br />";
            ++$l;
            ++$t;
    }
    
fclose($file);
?>
Так же приветствуются альтернативные варианты решения, заранее благодарствую!
PS Да бездарность и криворукость, но я лишь учусь
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.10.2013, 17:46
Ответы с готовыми решениями:

Подключение заголовочного файла, чтобы использовать функцию sayhello() из первого файла во втором
Функция sayhello() находится в файле по адресу /usr/src/linux-2.6.32.62/arch/x86/kernel/hello/ Соответственно по адресу расположены dir ...

Подключение файла
Имеются два файла. main/ /folder1/file1.php /folder2/file2.php В file1.php нужно подключить file2.php (через...

Подключение файла js
Есть файл менюшки, сделанные в пр-ме SothinkTreeMenu, но там все обращения идут в библиотеку этой пр-мы. Вот, напр. , в хэде: ...

7
127 / 127 / 25
Регистрация: 20.11.2009
Сообщений: 498
30.10.2013, 09:04
В случае правильной работы кода может помочь вот это
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
<?php
$file = @fopen('F:\Web\USBWebserver v8.5\8.5\root\study\chat.txt', 'rt');
    if($file === FALSE) {
        echo 'Ошибка при открытии файла';
        exit();
    } # if error
    
$l = 0;                                             # l - ключ для логина
$t = 0;                                             # t - ключ для строки текста
$c = 0;                                             # c - маркер длинны файла
 
    while ($str = fgets($file)) {               #разбиваем текст построчно массивы с на логин и текст
        list($login[$l], $text[$t]) = explode(':', $str);
        ++$l;
        ++$t;
        ++$c;
    }
        
$l = 0; 
$t = 0;                                                 #возвращаем маркер на начало массов
 
    $old_login = array();
    for ($i = 0; $i < $c; ++$i) {               #красим массивы (по факту можно засувать и в while, разбил для простоты чтения)
        $color = rand(000000, 999999);
        $this_login = $login[$l];
        $login[$l] = '<span style="color:'.(isset($old_login[$this_login]) ? $old_login[$this_login] : $color).'">'.$login[$l].'</span>';
        echo $login[$l].':'.$text[$t]."<br />";
            ++$l;
            ++$t;
        $old_login[$this_login] = $color;
    }
    
fclose($file);
?>
Но я сомневаюсь в правильности разбивки по двоеточию
1
 Аватар для Tarlis
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 12
30.10.2013, 09:21  [ТС]
А как тогда ещё можно отделить логины от текста? (просто по условию задания было, что текст отделяется от логинов двоеточием)
0
127 / 127 / 25
Регистрация: 20.11.2009
Сообщений: 498
30.10.2013, 09:27
Цитата Сообщение от Tarlis Посмотреть сообщение
А как тогда ещё можно отделить логины от текста? (просто по условию задания было, что текст отделяется от логинов двоеточием)
Если у вас работает, то претензий нет, я лишь сомневаюсь что выполняется это условие
Цитата Сообщение от Tarlis Посмотреть сообщение
строках могут быть смайлы или же просто повторяться двоеточие ': )'
1
 Аватар для Tarlis
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 12
30.10.2013, 09:33  [ТС]
Спасибо, работает, но лишь если логин шёл последним, если он встречается через 1 строку его всё равно красит заново
Про двоеточие - работает ровно до смайла, потом просто читает файл дальше
А можно отделить логины от текста не через двоеточие? (просто по условию задания было, что текст отделяется двоеточием, по нему я и решил разбить)
0
127 / 127 / 25
Регистрация: 20.11.2009
Сообщений: 498
30.10.2013, 09:53
Действительно, виноват
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
<?php
$file = @fopen('F:\Web\USBWebserver v8.5\8.5\root\study\chat.txt', 'rt');
    if($file === FALSE) {
        echo 'Ошибка при открытии файла';
        exit();
    } # if error
 
    $login = array();
    $text = array();
    while ($str = fgets($file)) {               #разбиваем текст построчно массивы с на логин и текст
        list($login[], $text[]) = explode(':', $str);
    }
 
    $old_login = array();
    foreach($login AS $this_id => $this_login) {               #красим массивы (по факту можно засувать и в while, разбил для простоты чтения)
        $color = rand(000000, 999999);
        echo '<span style="color:'.(isset($old_login[$this_id]) && $old_login[$this_id] > 0 ? $old_login[$this_id] : $color).'">'.$this_login.'</span> :'.$text[$this_id]."<br />";
        if(!isset($old_login[$this_id]))
        {
            $old_login[$this_id] = $color;
        }
    }
    
fclose($file);
?>
1
Заблокирован
30.10.2013, 10:04
Цитата Сообщение от Tarlis Посмотреть сообщение
просто по условию задания было, что текст отделяется от логинов двоеточием)
Кто-то очень недалекий придумал такое условие и такое задание.

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

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

Однако следует помнить что функции типа mysqli::real_escape_string() выкашивают табы.
0
 Аватар для Tarlis
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 12
30.10.2013, 18:51  [ТС]
Цитата Сообщение от sqlnub Посмотреть сообщение
ТЕКСТ СООБЩЕНИЯ
Мы совсем-совсем чайники Я боюсь для большинства моей группы слова табуляция и уж MySQL подавно будут звучать как нецензурные выражения или шаманские призывы....

Добавлено через 1 минуту
Цитата Сообщение от вандал Посмотреть сообщение
Действительно, виноват
Код PHP
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
<?php
$file = @fopen('F:\Web\USBWebserver v8.5\8.5\root\study\chat.txt', 'rt');
    if($file === FALSE) {
        echo 'Ошибка при открытии файла';
        exit();
    } # if error
 
    $login = array();
    $text = array();
    while ($str = fgets($file)) {               #разбиваем текст построчно массивы с на логин и текст
        list($login[], $text[]) = explode(':', $str);
    }
 
    $old_login = array();
    foreach($login AS $this_id => $this_login) {               #красим массивы (по факту можно засувать и в while, разбил для простоты чтения)
        $color = rand(000000, 999999);
        echo '<span style="color:'.(isset($old_login[$this_id]) && $old_login[$this_id] > 0 ? $old_login[$this_id] : $color).'">'.$this_login.'</span> :'.$text[$this_id]."<br />";
        if(!isset($old_login[$this_id]))
        {
            $old_login[$this_id] = $color;
        }
    }
    
fclose($file);
?>
Спасибо Решил кстати проблему схоже, добавив ещё запрос на наличие в массиве цвета
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2013, 18:51
Помогаю со студенческими работами здесь

Подключение CS файла?
как подключить CS файл?

Подключение файла
Здравствуйте! Есть файл index.php он лежит в корне сайта, я подключаю ini.php вот так: include ('/engine/model/ini.php'); Все...

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

Подключение js файла
Здравствуйте. Ребята. подскажите, пожалуйста, что необходимо сделать, что бы подключенный в &lt;head&gt; .js файл работал (что бы не...

Подключение файла
Здравствуйте, я на одной из страниц своего сайта - index.html, в правой колонке, прописал &lt;?php ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru