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
Форумы портала PHP.SU :: Версия для печати :: Игнор конца строки.
Форумы портала PHP.SU » PHP » Регулярные выражения » Игнор конца строки.

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

1. Litle - 03 Мая, 2011 - 15:05:30 - перейти к сообщению
Подскажите, что я делаю не так?

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

Цитата:
Суммарный остаток топлива [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))




Что посоветуете?
2. EuGen - 03 Мая, 2011 - 15:57:11 - перейти к сообщению
Использовать preg_match и preg_quote
3. Litle - 03 Мая, 2011 - 23:03:31 - перейти к сообщению
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()


4. DlTA - 04 Мая, 2011 - 00:24:54 - перейти к сообщению
какоето странное написание регулярки
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>";
5. EuGen - 04 Мая, 2011 - 09:01:57 - перейти к сообщению
Сообщение выдается, так как регулярное выражение для этой функции должно заключаться в обрамляющие символы.
Например,
/^reg.*/i
Почитайте
http://php.su/functions/?preg_match
6. Litle - 04 Мая, 2011 - 10:40:42 - перейти к сообщению
DlTA, EuGen: Спасибо!

 

Powered by ExBB FM 1.0 RC1