Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Игнор конца строки.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: не распазнаётся конец строки...
Litle
Отправлено: 03 Мая, 2011 - 15:05:30
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Подскажите, что я делаю не так?

Есть текстовый файл, из которого производится построчное считывание:

Цитата:
Суммарный остаток топлива [GT][кг][1]
Высота барометрическая [Hб][фт][0]
Температура воздуха (полная) [Тполн][град][1]
Приборная скорость (CAS) [Vпр][уз][1]
Число Маха [Мах][ед][2]
Температура выходящих газов левого двигателя [Tвг.л][град][0]
Температура выходящих газов левого двигателя [Tвг.п][град][0]
Обороты N1 левого двигателя [N1.л][%][1]
Обороты N1 правого двигателя [N1.п][%][1]
Мгновенный расход топлива левого двигателя [Qт.л][фунт/ч][0]
Мгновенный расход топлива правого двигателя [Qт.п][фунт/ч][0]
ПОС левого воздухозабоника включена [ПОСвз.л+]
ПОС левого воздухозабоника включена [ПОСвз.п+]
ПОС крыла включена [ПОСкр+]
Система кондиционир.воздуха (лев.) включена [КОНД.л+]
Система кондиционир.воздуха (прав) включена [КОНД.п+]
Система кондиционир.воздуха (лев) реж. HIGH [КОНД.л^]
Система кондиционир.воздуха (прав) реж. HIGH [КОНД.п^]


PHP:
скопировать код в буфер обмена
  1.         // Считывание заголовка файла ПИ
  2.         while (!feof($fileHandle)) {
  3.         $buffer = fgets($fileHandle);
  4.         .............
  5.  


Для идентификации последних квадратных скобок использую символ "$". Но именно с ним не работает.... (на с++ проблем не было)

PHP:
скопировать код в буфер обмена
  1. if (ereg("\\[(.+)\\]\$",$buffer,$regs)){
  2.                 echo($regs[0]."<br>");
  3.                 echo($regs[1]."<br>");
  4.         /*      echo($regs[2]."<br>");
  5.                 echo($regs[3]."<br>"); */
  6.         }


При чем, если сделать так, то работает:
PHP:
скопировать код в буфер обмена
  1. if (ereg("\\[(.+)\\]$",'Система кондиционир.воздуха (прав) реж. HIGH [КОНД.п^]',$regs))




Что посоветуете?

(Отредактировано автором: 03 Мая, 2011 - 15:08:52)

 
 Top
EuGen Администратор
Отправлено: 03 Мая, 2011 - 15:57:11
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Использовать preg_match и preg_quote


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Litle
Отправлено: 03 Мая, 2011 - 23:03:31
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




EuGen пишет:
preg_match


При использовании этой функции, выдается такой ворнинг:

Цитата:
Warning: preg_match(): Delimiter must not be alphanumeric or backslash in F:\denver\home\factordeg\www\factordeg\~load_file_kreys214.php on line 64 Call Stack: 0.0084 334072 1. {main}() F:\denver\home\factordeg\www\factordeg\~load_file_kreys214.php:0 0.0085 336560 2. getData() F:\denver\home\factordeg\www\factordeg\~load_file_kreys214.php:31 0.0097 346432 3. preg_match()


 
 Top
DlTA
Отправлено: 04 Мая, 2011 - 00:24:54
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




какоето странное написание регулярки
Litle пишет:
\[(.+)\]$

попробуйте иначе
PHP:
скопировать код в буфер обмена
  1. $text = "Суммарный остаток топлива [GT][кг][1]
  2. Высота барометрическая [Hб][фт][0]
  3. Температура воздуха (полная) [Тполн][град][1]
  4. Приборная скорость (CAS) [Vпр][уз][1]
  5. Число Маха [Мах][ед][2]
  6. Температура выходящих газов левого двигателя [Tвг.л][град][0]
  7. Температура выходящих газов левого двигателя [Tвг.п][град][0]
  8. Обороты N1 левого двигателя [N1.л][%][1]
  9. Обороты N1 правого двигателя [N1.п][%][1]
  10. Мгновенный расход топлива левого двигателя [Qт.л][фунт/ч][0]
  11. Мгновенный расход топлива правого двигателя [Qт.п][фунт/ч][0]
  12. ПОС левого воздухозабоника включена [ПОСвз.л+]
  13. ПОС левого воздухозабоника включена [ПОСвз.п+]
  14. ПОС крыла включена [ПОСкр+]
  15. Система кондиционир.воздуха (лев.) включена [КОНД.л+]
  16. Система кондиционир.воздуха (прав) включена [КОНД.п+]
  17. Система кондиционир.воздуха (лев) реж. HIGH [КОНД.л^]
  18. Система кондиционир.воздуха (прав) реж. HIGH [КОНД.п^]";
  19. $mch = "/\[([^\[\]]+)\][\n\r]/";
  20. preg_match_all($mch,$text,$matsh);
  21. echo "<pre>";
  22. print_r($matsh);
  23. echo "</pre>";
 
 Top
EuGen Администратор
Отправлено: 04 Мая, 2011 - 09:01:57
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Сообщение выдается, так как регулярное выражение для этой функции должно заключаться в обрамляющие символы.
Например,
/^reg.*/i
Почитайте
http://php.su/functions/?preg_match


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Litle
Отправлено: 04 Мая, 2011 - 10:40:42
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




DlTA, EuGen: Спасибо!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB