Я хочу выбрать конкретный текст для datavisualisation. Мой план состоит в том, чтобы выбрать текстовую форму текстового файла
file.txt
Этот файл выглядит так:
Switzerland (SUI) # - 23 players
(1) GK Pascal Zuberbühler ## 40, Basel (SUI)
(12) GK Diego Benaglio ## 1, Nacional (POR)
(21) GK Fabio Coltorti ## 2, Grasshoppe (SUI)
(3) DF Ludovic Magnin ## 30, Stuttgart (GER)
Я хочу выбрать
(SUI), (POR), (SUI) & (GER)
Поэтому я создал Regex
#\W([A-Z]){3}\S#
Это код, который я уже сделал
$myfile = fopen("2006/ch-switzerland.txt", "r") or die("Unable to open file!"); echo fread($myfile,filesize("2006/ch-switzerland.txt")); fclose($myfile);
Поэтому теперь я хочу выбрать конкретный текст и поместить его в группы, чтобы я увидел
(SUI)2, (POR), (GER)
Мои навыки PHP не очень большие, поэтому я надеюсь, что вы сможете мне помочь.
Спасибо за ваше время ;)
С file_get_contents
есть более простой способ прочитать файл. Однако, поскольку вы, кажется, хотите пропустить первую строку (назвав футбольную команду), я предпочел бы читать файл в виде строк. Это можно сделать с file
.
Кроме того, вам не нужны круглые скобки вокруг ваших символов регулярного выражения: #\W[AZ]{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)
// }
{}
? В большинстве языков с синтаксисом в стиле C (также в PHP) скобки не нужны, если следует только одно утверждение.