Выберите конкретную текстовую форму .TXT и сгруппируйте содержимое

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

 file.txt 

Этот файл выглядит так

 Швейцария (SUI) # - 23 игрока
(1) GK Pascal Zuberbühler ## 40, Базель (SUI)
(12) Г. К. Диего Бенальо ## 1, Насиональ (ПОР)
(21) Г. К. Фабио Колторти ## 2, Grasshoppe (SUI)
(3) Д.Ф. Людовик Магнин ## 30, Штутгарт (Германия)

Я хочу выбрать

(SUI), (POR), (SUI) & (ГЭР)

Итак, я сделал регулярное выражение

# \ W ([A-Z]) {3} \ S #

Это код, который я уже сделал

$ myfile = fopen ("2006 / ch-switzerland.txt", "r") или die ("Невозможно открыть файл!");
echo fread ($ myfile, filesize ("2006 / ch-switzerland.txt"));
fclose ($ MyFile);

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

(SUI) 2, (POR), (GER)

Мои навыки PHP не очень велики, поэтому я надеюсь, что вы сможете мне помочь.

Спасибо за ваше время 😉

0

Решение

С file_get_contentsЕсть более простой способ прочитать файл. Однако, поскольку вы, похоже, хотите пропустить первую строку (с именем футбольной команды), я бы предпочел читать файл в виде строк. Это может быть сделано с file,

Кроме того, вам не нужны круглые скобки вокруг букв регулярного выражения: #\W[A-Z]{3}\S#

<?php

# We use an array for counting
$counts = array();

# Read the file lines into an array
$lines = file('test.txt');

# Iterate over all lines but the first (1 means we start at line 1, instead of 0)
foreach (array_slice($lines, 1) as $line) {
# Do the regular expression and check if it was a match
$was_match = preg_match('#\W[A-Z]{3}\S#', $line, $match);
if ($was_match)
{
# check if we already counted this country
if (!isset($counts[$match[0]]))
$counts[$match[0]] = 0; # if not, set count to initial zero

# increment the country count by one
$counts[$match[0]] += 1;
}
}

var_dump($counts);

// array(3) {
//   ["(SUI)"]=>
//   int(2)
//   ["(POR)"]=>
//   int(1)
//   ["(GER)"]=>
//   int(1)
// }
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]