Потребовалось вставить 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
Это как раз эта строка.
(я поменял ошибку в оригинальном сообщении, так как до этого вставил не то):
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()!
может потом все это диво запихивается в 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() нельзя обойти?