Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как передать информацию в head через php?

Как передать информацию в head через php?


     13.06.2019    php    Все вопросы » Общие вопросы по PHP    788

вопрос
Всем привет, помогите пожалуйста решить проблему.
Сейчас всё подробно опишу и в конце предоставлю полный код целиком.

Есть первый php код который находится в body:

<?php
$text0 = file_get_contents("https://домен.ru/archivexml/{news-id}.xml");

$data = array();

preg_match_all('/<option value="(\d*)".*?>.*?<\/option>/m', $text0, $out1);
preg_match('/img src="(.*?)"/m', $text0, $out3);
preg_match('/img src="(.*?)"/m', $text0, $out4);
$out3 = preg_replace("#http://(www\.)?(.*?)/#is", '', $out3);
$out3 = preg_replace("#([^/]*)$#", '', $out3);
$out4 = preg_replace("/\?.*/", '', $out4);
$out4 = preg_replace("/.*?\./", '', $out4);
?>

Данный код берёт из файла xml ссылку на нужное мне изображение, пилит её на части как мне нужно, и выдаёт их с помощью print_r

Вот так:

<img src="<?php print_r ($out3[1]);?>1.<?php print_r ($out4[1]);?>">

print_r $out3[1] выводит 1/amazing/029/
print_r $out4[1] выводит png
В итоге получается ссылка на картинку 1/amazing/029/1.png

Далее я ещё много где использую print_r но всё это после основного php скрипта.
А сейчас мне необходимо эту же ссылку передать в head сайта в мета теги.

Придумал примерно вот такой выход, через php передать информацию до отрисовки страницы. Это второй код:

<?php echo outimgformeta();?> //данную часть я размещаю в head сайта в мета теги

<?php
function outimgformeta()
{
 global $testphpcode;
 $testphpcode = '<?php print_r ($out3[1]);?>1.<?php print_r ($out4[1]);?>';
 return $testphpcode;
}
?>

Это работает, но проблема в том, что передаётся не 1/amazing/029/1.png а само 1. в текстовом виде.

Вот так выглядит полный код:

<head>

<meta property="og:image" content="<?php echo outimgformeta();?>">
<meta itemprop="image" content="<?php echo outimgformeta();?>">
<link rel="image_src" href="<?php echo outimgformeta();?>">

</head>

<body>

// Данный php код трогать и менять нельзя, слишком поздно его менять.
<?php
$text0 = file_get_contents("https://домен.ru/archivexml/{news-id}.xml");

$data = array();

preg_match_all('/<option value="(\d*)".*?>.*?<\/option>/m', $text0, $out1);
preg_match('/img src="(.*?)"/m', $text0, $out3);
preg_match('/img src="(.*?)"/m', $text0, $out4);
$out3 = preg_replace("#http://(www\.)?(.*?)/#is", '', $out3);
$out3 = preg_replace("#([^/]*)$#", '', $out3);
$out4 = preg_replace("/\?.*/", '', $out4);
$out4 = preg_replace("/.*?\./", '', $out4);
?>

// Этот php код менять можно.
<?php
function outimgformeta()
{
 global $testphpcode;
 $testphpcode = '<?php print_r ($out3[1]);?>1.<?php print_r ($out4[1]);?>';
 return $testphpcode;
}
?>

</body>

Помогите изменить второй скрипт так, чтобы передавалось это 1/amazing/029/1.png
Сразу говорю, первый php код переместить в head сайта не представляется возможным.

Ответа пока нет


7 комментариев

maks
Юзер

maks - 13 июня 2019 09:41 -

А только file_get_contents в head не поставить? Без всякого пиления.

Башмак
Юзер

Башмак - 13 июня 2019 09:45 -

Целиком весь код не перенести, там ещё идёт проверка по длешным доп полям, если поле заполнено то код запускается.

maks
Юзер

maks - 13 июня 2019 09:49 -

Зачем целиком, не трогайте тот код вообще, просто спарсить ещё раз картинку.

Башмак
Юзер

Башмак - 13 июня 2019 09:51 -

Как я уже сказал, там идёт проверка на доп поля, этот код размещён в fullstory. В DLE доп поля не работают в head. Как и {news-id} который прописывается в file_get_contents.
Эти ДЛЕшные теги не работают в main.tpl

maks
Юзер

maks - 13 июня 2019 11:09 -

Делай в engine.php
file_get_contents("https://домен.ru/archivexml/{$news_id}.xml")

Башмак
Юзер

Башмак - 13 июня 2019 13:32 -

Ну а как быть с доп полями? Это всё не вариант, мне именно надо передать информацию в head, а не переносить сам код.

maks
Юзер

maks - 13 июня 2019 18:48 -

Тогда я не понял. Так что нужно в head вывести? Не картинку из xml файла разве?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх