Эхо HTML + PHP из базы данных - PullRequest
1 голос
/ 16 мая 2010

Я работаю над сайтом, который имеет дело с большим количеством текстов в HTML, поэтому недавно я выучил PHP и переместил их в базу данных MySQL и echo содержимое с учетом конкретной главы и раздела. Теперь это работает относительно хорошо, HTML отображается правильно. Тем не менее, в некоторых частях я включил вызовы функций PHP, и они, похоже, не оцениваются - скорее они просто вставляются в исходный код (и, следовательно, невидимы для средства просмотра страниц), никогда ничего не делая. Они работали, когда были простыми файлами .html.

Как я могу решить это?

Например, текст может выглядеть так:

<?php printChapterName(); ?>
<p>Some text</p>
...
<?php showImage($name, $alt-text); ?>
...

Это просто показывает текст на странице.

Редактировать: функции отражают некоторый HTML.

Ответы [ 3 ]

2 голосов
/ 16 мая 2010

Этот должен делать то, что вы хотите: (функция evalInlinePHP и использование его в preg_replace_callback )

 $text = "<?php printChapterName(); ?> <p>Lorem ipsum</p>";
 function printChapterName(){ echo '<h1>Chapter #1</h1>'; }

 function evalInlinePHP($m)
 {
  ob_start();
  eval($m[1]);
  return ob_get_clean();
 }

 echo preg_replace_callback("/<\?php(.*)\?>/", 'evalInlinePHP', $text);
 //prints <h1>Chapter #1</h1> <p>Lorem ipsum</p>

Но учтите, что не очень хорошая очень плохая идея сохранить функцию php в БД и затем оценить ее. Вы должны действительно переосмыслить, как хранить и отображать эти тексты

1 голос
/ 16 мая 2010

Используйте eval () , чтобы PHP оценивал код, поступающий из вашей базы данных. Обратите внимание, что это опасно, если только вы не единственный, кто отвечает за этот код PHP. Также убедитесь, что эти функции определены на вашей текущей странице.

1 голос
/ 16 мая 2010

Ну, вы повторяете эти звонки, поэтому они пишутся, а не интерпретируются.

Полагаю, вам следует переосмыслить способ сохранения текста в базе данных. Зачем использовать showimage($name), когда вы можете просто сохранить тег <img>? Если изображения располагаются в одних и тех же местах на всех страницах (например, если у вас есть изображение, связанное с каждой страницей), создайте другой столбец с img src в вашей таблице и выведите изображение на свое место с помощью другого вызова PHP.

Например, что-то в строках (это грубый пример, но вы поняли):

$res = mysql_query("SELECT text, image FROM contents WHERE id_pag = ".$id);
$row = mysql_fetch_array($res);
// Output the image
echo '<img src="'.$row['image'].'" />'. $row['text'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...