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 » » Хранение данных, их вывод и обработка » Констатнта в тексте

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

1. dubasua - 17 Декабря, 2012 - 01:33:32 - перейти к сообщению
Доброго времени!
Есть некий текстовый файл, с которого считываю содержимое

Объявлена константа

В текстовом файле несколько раз встречается строка 'MY_CONST', можно как нибудь подставить значение константы без replace?
(Добавление)
Блин.... не в ту тему написал....
2. Toxa - 17 Декабря, 2012 - 07:04:26 - перейти к сообщению
а чем str_replace не устраивает?
3. dubasua - 17 Декабря, 2012 - 10:10:54 - перейти к сообщению
Потому как констант в тексте может быть больше чем одна, и их не нужно отслеживать, а просто заменить на их значение.
4. EuGen - 17 Декабря, 2012 - 10:21:51 - перейти к сообщению
dubasua пишет:
'MY_CONST'

- это строковый литерал, не являющийся константой в терминах php. Указать без кавычек и в начале файла определить константу через define.
Замена потребуется, судя по данным, в любом случае.
5. Мелкий - 17 Декабря, 2012 - 10:24:52 - перейти к сообщению
Ну так чем при этом не подходит str_replace-то?
Для полного перебора - есть get_defined_constants
6. dubasua - 17 Декабря, 2012 - 10:29:24 - перейти к сообщению
Строку можно записать и без кавычек, просто MY_CONST, можно даже записать $my_val или {$my_val}, и перед считыванием текста из файла определить $my_val, да записать можно как угодно, только что бы заменить потом было проще вопрос в том как все это дело заменить на значение, так как $my_val, может быть не один десяток.
7. EuGen - 17 Декабря, 2012 - 10:33:03 - перейти к сообщению
У одной константы - одно значение. Сообразно этому имеется противоречие желаемого (множество значений) результата и желаемого (константы) инструмента.
Либо же нужно использовать несколько констант.
8. dubasua - 17 Декабря, 2012 - 10:37:07 - перейти к сообщению
Мелкий пишет:
Ну так чем при этом не подходит str_replace-то?
Для полного перебора - есть get_defined_constants

Это примерно вот так
PHP:
скопировать код в буфер обмена
  1. foreach ($const as $name=>$const){
  2.   $text = preg_replace ($name,$const,$text)
  3. }


Получается если в массиве будет 35 элементов, он его и будет реплейсить 35 раз, и такую операцию нужно сделать не один раз, сильно трудоемко получится.
9. EuGen - 17 Декабря, 2012 - 10:41:26 - перейти к сообщению
dubasua
str_replace принимает на вход и массивы (а preg_replace здесь можно не использовать).
10. dubasua - 17 Декабря, 2012 - 10:54:11 - перейти к сообщению
EuGen пишет:
str_replace принимает на вход и массивы

Сейчас попробую ему подсунуть ассоциативный массив.
(Добавление)
Просто я думал еще вот как, если делать вот так
PHP:
скопировать код в буфер обмена
  1. $name = "some_variable";
  2. $text = "some text with $name";

В $text залетает значение $name, а если также сохранить и в текстовом файле, и после считывание как-то "Запустить" или еще как то, считанный текст, так что бы все $name заменились на реальные переменные.
11. EuGen - 17 Декабря, 2012 - 11:00:22 - перейти к сообщению
dubasua
Нет, ассоциативный не принимается. Но всегда есть array_keys и array_values
12. dubasua - 17 Декабря, 2012 - 11:08:02 - перейти к сообщению
Ассоциативный принимается, только он по ключам не работает, нужно строго по порядку, иначе получается каша. Спасибо Вам EuGen, буду варьировать Ваш вариант.

 

Powered by ExBB FM 1.0 RC1