Ваше регулярное выражение выглядит нормально. Возможно, у вас есть пробелы в конце каждой строки (вы использовали '$'). Вы можете удалить их с помощью trim (). Кроме того, регулярное выражение может быть не лучшим решением в каждом случае. Возможно, вам было бы проще проверить наличие '/', затем использовать split () и проверить, что массив [0] является числом (is_numeric ()). Рассмотрим следующий код:
$wyniki=file("wyniki.txt");
foreach($wyniki as $w) {
if (strpos($w, '/') !== FALSE) {
$tarr = split("\/", $w);
if (is_numeric($tarr[0]))
echo "This is a number: " . $tarr[0];
}
}
Второй код с регулярным выражением:
$flines = array("5/5","asd","4/5","fgh");
$regex = "#^([0-9]{1})\/([0-9]{1})$#";
$res = $tot = 0;
foreach ($flines as $fline) {
$arr = array();
preg_match($regex, $fline, $arr);
if (is_numeric($arr[1])) {
$res += $arr[1];
$tot++;
}
}
$avg = bcdiv($res, $tot, 2);
echo "Average: $avg";