[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблемы с синтаксисом
alladdin
Добрый день,

Потребовалось вставить php-код на страницу на сайте под движком Drupal.
Код до сих пор живет и работает отдельно вполне нормально.
Проблема в том, что при вставке возникли проблемы с кодировкой, но я смог их все исправить, кроме одной строки. Она нереально "зашифрована".

Когда я вставляю оригинальный код, то страница просто не грузится

Оригинальная страница была в Windows-1251. По крайней мере русский текст именно в ней.

Прошу вашей помощи, мне нужно понять что было в оригинале в этой строке (так она выглядит в разных вариантах декодирования):

После "Штирлица" в Notepad++:
$season_str .= sprintf("<option value=\"$lsid\" $add>с d/d по /d</option>", $d_f, $m_f, $d_t, $m_t); 

Оригинальный файл в Notepad++:
$season_str .= sprintf("<option value=\"$lsid\" $add>с %02d/%02d по %02/%02d</option>", $d_f, $m_f, $d_t, $m_t); 


После сохранения и обработки скрипта в виде (лучшее, что я смог придумать):
$season_str .= sprintf("<option value=\"$lsid\" $add>с "d/"d по "/"d</option>", $d_f, $m_f, $d_t, $m_t); 


сервер выдает:
Parse error: syntax error, unexpected T_STRING in /home/holiday/public_html/includes/common.inc(1696) : eval()'d code on line 538 << - это как раз эта строка

Если нужно, могу выложить весь код.

Спасибо за помощь!



Спустя 12 минут, 57 секунд (14.06.2010 - 22:26) Rand написал(а):
$season_str .= sprintf("<option value=\"$lsid\" $add>с %02d/%02d по %02/%02d</option>", $d_f, $m_f, $d_t, $m_t

Чем тебе это строчка не понравилась? Абсолютно нормальный форматный вывод. %02d означает, что на этом месте должно быть целое число минимум из 2-х символов.

Спустя 10 минут, 20 секунд (14.06.2010 - 22:36) alladdin написал(а):
Мне вообще в ней все нравится, так бы и оставил ее нетронутой, но ругается на нее зараза:

(я поменял ошибку в оригинальном сообщении, так как до этого вставил не то):

Parse error: syntax error, unexpected T_STRING in /home/holiday/public_html/includes/common.inc(1696) : eval()'d code on line 538

Это как раз эта строка.

Спустя 30 минут, 23 секунды (14.06.2010 - 23:06) Rand написал(а):
$season_str .= sprintf("<option value=\"$lsid\" $add>с "d/"d по "/"d</option>", $d_f, $m_f, $d_t, $m_t); 

С кавычками намудрил и непонятно вообще, что ты хотел сделать.
Цитата
Parse error: syntax error, unexpected '}' in /home/holiday/public_html/includes/common.inc(1696) : eval()'d code

А здесь ведь явно написано, что где-то скобку забыл.

Спустя 2 минуты, 14 секунд (14.06.2010 - 23:09) alladdin написал(а):
Цитата (Rand @ 14.06.2010 - 20:06)
С кавычками намудрил и непонятно вообще, что ты хотел сделать.


Если бы я разбирался так хорошо в php... Мне самому непонятно что там должно было быть сделано.



Цитата (Rand @ 14.06.2010 - 20:06)
А здесь ведь явно написано, что где то скобку забыл.


Уже исправил это. Тогда страница просто не грузится.

Спустя 3 минуты, 27 секунд (14.06.2010 - 23:12) FatCat написал(а):
Откуда eval() вылез в сообщении об ошибке?
Вероятно там совсем в других строках после множественных отбивок красоты прячутся в непойми каких кодировках - видел раз такую защиту...

Спустя 3 минуты, 37 секунд (14.06.2010 - 23:16) tomash написал(а):
Подождите, ничего понять немогу!
$season_str .= sprintf("<option value=\"$lsid\" $add>с %02d/%02d по %02/%02d</option>", $d_f, $m_f, $d_t, $m_t); 

вот это правильная строка!

Спустя 2 минуты, 9 секунд (14.06.2010 - 23:18) tomash написал(а):
FatCat
может потом все это диво запихивается в eval()!

Спустя 39 секунд (14.06.2010 - 23:19) alladdin написал(а):
Цитата (FatCat @ 14.06.2010 - 20:12)
Откуда eval() вылез в сообщении об ошибке?
Вероятно там совсем в других строках после множественных отбивок красоты прячутся в непойми каких кодировках - видел раз такую защиту...


Код вставляю в страницу системы управления контентом drupal.org
Насколько я понимаю, она его обрабатывает (и eval проверяет код на валидность).
Если код запускать из файла, скажем, xxx.php, то он работает нормально.
Изначально ругалось на присутствие в коде не-ascll символов.


Спустя 2 минуты, 34 секунды (14.06.2010 - 23:21) alladdin написал(а):
Цитата (tomash @ 14.06.2010 - 20:18)
FatCat
может потом все это диво запихивается в eval()!


Да, именно:

drupal_eval($code)

Evaluate a string of PHP code.

This is a wrapper around PHP's eval(). It uses output buffering to capture both returned and printed text. Unlike eval(), we require code to be surrounded by <?php ?> tags; in other words, we evaluate the code as if it were a stand-alone PHP file.

Using this wrapper also ensures that the PHP code which is evaluated can not overwrite any variables in the calling code, unlike a regular eval() call.
Parameters

$code The code to evaluate.
Return value

A string containing the printed output of the code, followed by the returned output of the code.

Спустя 2 минуты, 1 секунда (14.06.2010 - 23:23) tomash написал(а):
%02d/%02d по %02d/%02d - вот так правильней )))

Спустя 4 минуты, 29 секунд (14.06.2010 - 23:28) alladdin написал(а):
Цитата (tomash @ 14.06.2010 - 20:23)
%02d/%02d по %02d/%02d - вот так правильней )))


К сожалению не работает

Спустя 36 минут, 23 секунды (15.06.2010 - 00:04) tomash написал(а):
Подозрение есть такое что eval() не работает с html-тэгами или как -то хитро работает))) Я еще с таким не сталкивался, а eval() нельзя обойти?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.