Всем привет. Не могу понять как сделать рекурсивный вывод "слова" из массива (цель отфильтровать только имена) В файле test.txt Больше 5000 тыс строк. Содержатся строки вида: --- Бричко Наталья Алексеевна Бровкина Галина Геннадьевна Бровко Елена Игоревна --- "имена" в попадают в $arr[1] " Но я не могу разобраться как сделать вывод только имен. Получается вывести только одно имя, я понимаю что нужен цикл для вывода. Подскажите пожалуйста. Код (Text): <?php $str = file_get_contents("test.txt"); $arr = explode(" ",$str); for($i = 0; $i < count($arr ); $i++) { echo $arr[$i]."<br />"; } ?> з.ы нашел вариант со Split'ом но тоже не могу сделать вывод Код (Text): <?php $str = file_get_contents("test.txt"); $arr = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE); print_r($arr[1]); ?>
Код (Text): <?php $str = file_get_contents("test.txt"); $arr = explode(" ",$str); echo $arr[1]."<br />"; ?>
Если у тебя идет текст в виде: а НЕ тогда надо: Код (Text): $str = file_get_contents("test.txt"); $arr = explode("\n",$str); // в итоге допустим $arr[5] будет допустим - Бровкина Галина Геннадьевна foreach ($arr as $temp) { $temp_arr = explode(" ",$temp); echo $temp_arr[1]; // 0 это фамилия, 1 это имя, 2 это отчество } и еще, вот так не делай: Код (Text): for($i = 0; $i < count($arr); $i++) { ... } всегда заранее узнавай длину и записывай ее в в отдельную переменную: Код (Text): $l = count($arr); for($i = 0; $i < $l; $i++) { ... } т.к. каждый раз выполняется count, а он потребляет некий ресурс, скажем так, производительность падает в 10 раз.
Код (PHP): foreach(file('test.txt') as $v) { $fio = explode(' ', $v,3); echo $fio[1].'<br />'; } но помните, что функции типа file(), file_get_contents() .. считывают в память ВЕСЬ файл сразу. если файл большой(десятки, сотни Мб...), то это не очень правильно. лучше тогда читать его понемногу и выводить. тогда расход памяти не будет завистеть от объема файла. для это вам нужны функции fopen(), fgets(), fclose()... примеры есть в мануале
VLK Спасибо большое, и за фичу с проверкой длинны. Вы спасли >100 человеко-часов) runcore Спасибо за совет.