Мне кажется, что вы спрашиваете о двух вещах: 1. Как обрабатывать результат вашего бокса и фильтровать соответствующие строки; 2. Извлечь конкретные значения из соответствующих строк.
Предполагая, что ваш boxscore доступен как переменная под названием $str
, вы можете просто взорвать его на своих новых строках, перебрать результат, фильтровать нужные строки и затем извлечь значения из этих строк.
Что-то, как это довольно механические, но должны работать, учитывая ваш пример входного сигнала выше:
<?php
$str = <<<STR
CHI 3 - MIN 0
1st
CHI - Kane (Seabrook, Toews)
2nd
CHI - Kane (Seabrook, Toews)
3rd
CHI - Kane (Seabrook, Toews)
STR;
// split boxscore input on newlines
// to create an array of lines
$lines = explode(PHP_EOL, $str);
// iterate over lines
// filter each line... ignore zero-length lines
// check if the last char is ')'
// preg_split on filtered lines
// assign to vars
// etc.
foreach ($lines as $line) {
$len = strlen($line);
if ($len && $line[$len - 1] === ')') {
$matches = preg_split('/^\w{3}\s+-\s+|\s+\(|,\s+|\)/', $line, null, PREG_SPLIT_NO_EMPTY);
list($goalscorer, $assist1, $assist2) = $matches;
// do whatever you want with `$goalscorer`, `$assist1`, `$assist2`
}
}
Конечно, каждая итерация будет перезаписывать значения $goalscorer
, $assist1
и $assist2
, но я просто иллюстрируя, что вы можете сделайте все, что захотите, с этими значениями на этом этапе, вы можете выполнять дальнейшие операции или записывать их в массив или что-то еще, что пока не выходит за рамки вопроса.
Регулярное выражение, вероятно, немного неэлегантно; он должен работать на странные двухствольные и переносимые фамилии.
Надеюсь, это поможет! :)
preg_match отлично работает, но, возможно, лучший вопрос в том, как вы читаете файл, file_get_contents? Анализируются ли данные по строкам, или вам нужно загрузить весь файл, что приведет к большой разнице в производительности. – ArtisticPhoenix
Я, скорее всего, сделаю форму, чтобы вставить boxscore и вставить ее в строку. (не уверен, что это самая умная вещь.) – rolomcflurry
Является примером полного ввода, который вы будете вставлять, или вы будете только вставлять в «строки оценки» (если это точное описание); например: «CHI - Kane (Seabrook, Toews)»? –