Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос о php - глюки какие-то...

367
29 апреля 2011 года
Meatcoins
303 / / 18.01.2006
У меня вопрос...
Вот такой код:
Цитата:

<?php
$template='<?php echo "Hello World from template!"; ?> Yahoo!!!';
ob_start();
eval("?>".$template."<?");
$template=ob_get_contents();
ob_end_clean();
echo $template;
exit();
?>


Вывод в браузере вот такой:

 
Код:
Hello World from template! Yahoo!!!<?

Это я с ума сошёл или у модуля php поехала крыша?
Откуда берётся "<?" после "Yahoo!!!" - вообще не понятно!!!
Его там быть не должно!!!
277
29 апреля 2011 года
arrjj
1.7K / / 26.01.2011
У меня норм выводит без лишних "<?" (апач 2.2.16, php 5.3.3)
Да и не обязательно eval("?>".$template."<?"); можно просто eval("?>".$template); открывать php в конце не обязательно вроде.
Да и если в пхп не включена поддержка короткого объявления (<? а не <?php - short_open_tag в php.ini) то "<?" будет рассматриватся как текст, а не как открытие пхп (как раз думаю ваш случай).
367
29 апреля 2011 года
Meatcoins
303 / / 18.01.2006
Да, самое забавное, что, если я напишу:
"<?php", то у меня после слова "Yahoo!" появляется уже не "<?" а "<?php"!
Бред!
Короче, ясно - это глюки самого модуля PHP - такого быть не должно - написано ведь всё правильно.
Можно выйти из положения так:
$template=$page_content=str_replace("?>","",(str_replace("<?","",ob_get_contents())));
277
29 апреля 2011 года
arrjj
1.7K / / 26.01.2011
Ага! Вроде есть решение: попробуй не "<?" а "<? " (пробел после открывающего тэга)
367
29 апреля 2011 года
Meatcoins
303 / / 18.01.2006
Если писать так:
 
Код:
eval("?>".$template."<? ");

С пробелом.
Глюки...
Пробелы не помогают.

В реальном сайте получается так:
 
Код:
</td>
</tr>

</table>
</body>
</html>
 <?


А вот так:
 
Код:
eval("?>".$template."<?php ");

Работает.
Если убрать пробел, то будет так:
 
Код:
</td>
</tr>

</table>
</body>
</html>
 <?php

А с пробелом "<?php" исчезает.
Бред!
Глюки модуля PHP!

Спасибо arrjj за совет!!!

У меня есть несколько подобных мест - там написано так:
 
Код:
eval("?>".$template."<?");

Без проблем!
Но этот же код почему-то упорно глючит в 2-х местах аналогичных местах!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог