Можно ли использовать регулярное выражение во втором аргументе функции fscanf ()?

Я хочу прочитать ‘m’ число целых чисел, разделенных пробелом, поэтому я не знаю, сколько модификаторов формата будет использоваться.

Согласно документации PHP

Описание

mixed fscanf ( resource $handle , string $format [, mixed &$... ] )

Функция fscanf () похожа на sscanf (), но она требует ввода
из файла, связанного с дескриптором и интерпретирует ввод в соответствии с
в указанном формате, который описан в документации для
Sprintf ().

Любой пробел в строке формата соответствует любому пробелу в
входной поток. Это означает, что даже вкладка \ t в строке формата может
совпадать с одним пробелом во входном потоке.

Каждый вызов fscanf () читает одну строку из файла.

Так можно ли использовать модификатор формата переменной во втором аргументе fscanf ()

например.

fscanf($_fp,"%d\t%d\t%d\n");

Здесь это 3% d модификаторов из-за известного размера массива.

я знаю fgets($_fp) или же fscanf($_fp,"%[^\n]") можно использовать, но в fgets($_fp) вернет строку, пока fscanf($_fp,"%[^\n]") вернет не сформулированный результат. В обоих этих случаях я не смогу сделать это

arr[i] = fscanf($_fp,"%d\t%d\t%d\n"); //Because I need a integer array

где arr[i] содержит другой массив, который хранит массив, возвращенный
fscanf($_fp,"%d\t%d\t%d\n"),

то есть … не сможет напрямую использовать fscanf () для инициализации массива.
если бы

I / P

2 3 4

2 3 4

4 5 1

но I / p может быть любого размера, поэтому можно использовать регулярное выражение или что-либо еще во втором аргументе функции fscanf () для непосредственного хранения в массиве.

0

Решение

Вам не нужен fscanf() это понимает регулярные выражения. Вы можете прочитать данные из файла по одной строке, используя fgets() затем разобрать его с помощью preg_match() или же preg_match_all().

Если вы знаете, что строка содержит только числа, разделенные пробелами, то explode() делает работу тоже.

0

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

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

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