Как найти слово в файле и получить символы рядом с ним с помощью php? - PullRequest
0 голосов
/ 19 апреля 2019

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

chatusernames.txt
miroh
hellevator

usernamecolors.txt
Миро RGB (219, 11, 11)
элеватор RGB (255, 11, 11)

Мне удалось получить имя из chatusernames.txt, и теперь у меня есть чтобы получить цвет из usernamecolors.txt. Я думаю, я смог сравнить слова и найти имя, но я не знаю, как получить цвет рядом с ним. Я хочу поместить цвет в простую строку.

ех. Я получил miroh в usernamecolors.txt, но не могу извлечь из него RGB (219,11,11).

Я новичок в использовании файлов с php, и я с трудом понимаю это. Пожалуйста, помогите мне: (

               $usernamecolors = fopen($path . "usernamecolors.txt", "r") or die("Unable to open file!");
                $findname = true;
                while (!feof($usernamecolors)) {
                    $letter = fgetc($usernamecolor);
                    if ($letter != " " || $letter != ':') {
                        $findname = $findname + $letter;
                        if ($findname == $name) {

                        }
                    }
                }

Мой код - беспорядок, извините. $ name - это имя пользователя, извлеченное из usernames.txt, а $ findname - это имя, найденное в usernamecolors.txt

Мне просто нужно знать, как:
- найти слово в файле
- Добавить символы рядом с ним в файл

Ответы [ 3 ]

1 голос
/ 19 апреля 2019

Вместо того, чтобы читать его по битам, он загружает весь файл в массив, используя file().Затем он обрабатывает каждую строку и разбивает ее, используя explode(), разбивая ее по пробелам и ограничивая ее двумя элементами, и разделяет что-то вроде miroh RGB(219, 11, 11) на miroh и RGB(219, 11, 11).Затем он использует первую часть в качестве индекса для нового массива и сохраняет для него цвет.

$usernamecolors = file($path . "usernamecolors.txt", 
    FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) 
        or die("Unable to open file!");
$colors = [];
foreach ( $usernamecolors as $line )    {
    list($name, $color) = explode(" ", $line, 2);
    $colors[$name] = $color;
}

Если вы тогда

print_r($colors);

Вы получите ...

Array
(
    [miroh] => RGB(219, 11, 11)
    [hellevator] => RGB(255, 11, 11)
)
0 голосов
/ 19 апреля 2019

вы можете использовать только chatusernames.txt и отредактировать так

Мирох | RGB (219, 11, 11)

после этого вы просто взорвете каждую строку и выделите имя пользователя и цвет для каждого пользователя

$usernamecolors = fopen($path . "usernamecolors.txt", "r") or die("Unable to open file!");
        $users = [];
        while (!feof($usernamecolors)) {
            $line = fgets($usernamecolors);
            if (trim($line) != '') {
                $line = explode('|', $line);
                $users[] = ['username' => $line[0], 'color' => trim($line[1])];
            }
        }
0 голосов
/ 19 апреля 2019

На вашем месте я бы использовал стандартные форматы для файла, такие как JSON, INI или CSV.

Если вы все еще хотите использовать нестандартно отформатированный файл, как вы, вы можете использовать функцию fgets для чтения файла построчно.

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

EDIT: для объединения строк в PHP используется оператор ., а не +

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...