Вопрос о php - глюки какие-то...
Вот такой код:
Цитата:
<?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!!!" - вообще не понятно!!!
Его там быть не должно!!!
Да и не обязательно eval("?>".$template."<?"); можно просто eval("?>".$template); открывать php в конце не обязательно вроде.
Да и если в пхп не включена поддержка короткого объявления (<? а не <?php - short_open_tag в php.ini) то "<?" будет рассматриватся как текст, а не как открытие пхп (как раз думаю ваш случай).
"<?php", то у меня после слова "Yahoo!" появляется уже не "<?" а "<?php"!
Бред!
Короче, ясно - это глюки самого модуля PHP - такого быть не должно - написано ведь всё правильно.
Можно выйти из положения так:
$template=$page_content=str_replace("?>","",(str_replace("<?","",ob_get_contents())));
Ага! Вроде есть решение: попробуй не "<?" а "<? " (пробел после открывающего тэга)
Код:
eval("?>".$template."<? ");
С пробелом.
Глюки...
Пробелы не помогают.
В реальном сайте получается так:
Код:
</td>
</tr>
</table>
</body>
</html>
<?
</tr>
</table>
</body>
</html>
<?
А вот так:
Код:
eval("?>".$template."<?php ");
Работает.
Если убрать пробел, то будет так:
Код:
</td>
</tr>
</table>
</body>
</html>
<?php
</tr>
</table>
</body>
</html>
<?php
А с пробелом "<?php" исчезает.
Бред!
Глюки модуля PHP!
Спасибо arrjj за совет!!!
У меня есть несколько подобных мест - там написано так:
Код:
eval("?>".$template."<?");
Без проблем!
Но этот же код почему-то упорно глючит в 2-х местах аналогичных местах!