Консультация № 188986
19.03.2016, 06:35
0.00 руб.
0 2 2
Здравствуйте! У меня возникли сложности с таким вопросом:

$strings = file("file.txt"); // в файле 1 строка вида: 35 44 55 2 5 т.е. строка значений с разным количеством пробелов между ними, причем количество пробелов между значениями может быть всегда разным (содержимое файла периодически меняется)

$raz_string = explode(" ", $strings); //разбиваем по пробелу, но в этом случае все пробелы считаются как разделители.

Вопрос: как обработать строку перед разбивкой, чтобы количество пробелов между цифрами было всегда равным одному?

Обсуждение

давно
Посетитель
398732
9
19.03.2016, 06:45
общий
это ответ
Здравствуйте, bars.66!
Можно обработать строку следующим образом:

$strings = preg_replace("#[\s]+#is", " ", $strings);
5
давно
Старший Модератор
312929
1973
20.03.2016, 02:30
общий
это ответ
Здравствуйте, bars.66!

Ещё один способ - использовать функцию preg_split:
[code lang=php]$strings = file("file.txt");
$raz_strings = preg_split("#[\s]+#is", $strings[0]);
[/code]
которая сразу разбивает исходную строку по разделителю, содержащему любое количество пробелов.

Кстати, не забывайте, что функция file возвращает содержимое файла в виде массива строк (даже если строка одна). Поэтому нужно либо обращаться к первому элементу этого массива (в виде $strings[0]), либо использовать вместо file функцию file_get_contents, которая возвращает весь файл в виде одной строки.
5
Форма ответа