Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2016, 11:10   #1
cheburashkaRF
Пользователь
 
Регистрация: 09.11.2011
Сообщений: 22
По умолчанию распарсить текстовый файл и получить массив вида array( “(0:00)”=>“text1”,“(0:30)”=>“text2” )

есть текстовый файл вида

(0:00)

text1

text2

(0:30)

text text text text text

..................
нужно получить массив вида ключ - это значение в скобках, а значение - это тест.

array("(0:00)"=>"text1 text2","(0:30)"=>"text text text text text")

пишу следующее:
PHP код:
$key = array();
    
$val = array();
    
$out = array();
    
$file file('1.txt');
    foreach(
$file as $line) {
        
$line trim($line);
        if (
preg_match("/(\d{0,2}:\d\d)/",$line,$match)){
            
$key[]=$match;
        }else{
            
$val[]=$match;
        }
        
$out=array_merge($key,$val);
    }
    echo 
'<pre>';
    
print_r($out); 
cheburashkaRF вне форума Ответить с цитированием
Старый 13.08.2016, 11:31   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Какой вид данных в текстовом файле 1 ?

Код:
    $out = array(); 
    $file = array('(0:00)gfgfgfgfgf1', '(0:01)gfgfgfgfgf2', '(0:02)gfgfgfgfgf3');
    foreach($file as $line) { 
        if (preg_match("/\((\d{0,2}:\d+?)\)(.+)/i", trim($line), $match))
            $out[$match[1]] = $match[2]; 
    } 
    echo '<pre>'; 
    print_r($out);

Последний раз редактировалось uberchel; 13.08.2016 в 11:35.
uberchel вне форума Ответить с цитированием
Старый 13.08.2016, 14:03   #3
cheburashkaRF
Пользователь
 
Регистрация: 09.11.2011
Сообщений: 22
По умолчанию

Цитата:
Сообщение от uberchel Посмотреть сообщение
Какой вид данных в текстовом файле 1
Не понимаю вас.Это тестовый документ.Данные из файла я представил в теме.
Запустил ваш код, но чёт массив пустой :/
cheburashkaRF вне форума Ответить с цитированием
Старый 13.08.2016, 15:59   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

PHP код:
// 1.txt:
// (0:00)

// text1

// text2

// (0:30)

// text text text text text

$file file('1.txt');
$out = array();
$key '';

foreach(
$file as $row){
    
$row trim($row);
    if(empty(
$row)) continue;

    
// если в тексте допускается наличие скобок (типа: text (text text) text например) 
    // то условие проверки можно заменить на === 0 
    
if(strpos($row'(') !== false){ 
        
$key $row;
        
$out[$key] = '';
    }
    else{
        
$out[$key] .= (empty($out[$key])) ? $row ' ' $row;
    }
}

var_dump($out); 
Результат:
PHP код:
array (size=2)
  
'(0:00)' => string 'text1 text2' (length=11)
  
'(0:30)' => string 'text text text text text' (length=24

Последний раз редактировалось Andkorol; 13.08.2016 в 18:29.
Andkorol вне форума Ответить с цитированием
Старый 15.08.2016, 12:22   #5
predefined
Форумчанин
 
Регистрация: 01.08.2016
Сообщений: 182
По умолчанию

PHP код:
if (empty($row)) continue; 
использовать несколько опасно - empty() пропустит строки с:
Цитата:
0 (целое число)
0.0 (дробное число)
"0" (строка)
predefined вне форума Ответить с цитированием
Старый 15.08.2016, 23:48   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от predefined Посмотреть сообщение
использовать несколько опасно - empty() пропустит строки
Жизнь вообще опасная штука...
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан текстовый файл f. Получить самую короткую строку файла. larissia Помощь студентам 1 07.06.2012 21:42
Ввести в поле text1 и text2 любые символы и отправить мне на мыло (e-mail)? CodSharp Общие вопросы .NET 27 20.03.2010 21:59
Массив и текстовый файл kJlaCuk Помощь студентам 1 22.09.2008 18:31
Текстовый файл в текстовый массив Kimimaru Общие вопросы C/C++ 1 02.12.2007 11:55