Как вывести часть содержимого файла с помощью функции file_get_contents ?

12
kxgoo
На сайте с 29.02.2008
Offline
145
2656

Ситуация такая, на своем сайте site1.com я размещаю блок новостей из своего второго сайта site2.com с помощью кода <?php echo file_get_contents("http://site2.com/base.html");?>

Все вроде бы хорошо, но возникла такая проблема, кодировка файла base.txt = utf-8, а кодировка сайта site1.com = windows1251 , блок новостей выводится не читабельно.

Как с помощью функции file_get_contents не полностью содержимое файла, а только отдельный, нужные мне фрагмент текста, например от строчки #nachalo до строчки #konec, или как такое сделать с помощью другой функции? Чтобы не передавалась кодировка файла base.html на сайт site1.com

Буду очень признателен за помощь.

Adverte - Лучшие тизерные сети (http://adverte.net)
lealhost
На сайте с 07.06.2014
Offline
136
#1

Получить содержимое страницы в переменную и парсить ее.

<?php
$con = file_get_contents("http://site2.com/base.html");
$start = explode('#start', $con);
$output = explode('#end', $start[1])[0];

echo $output;

?>

Конечно, не самый удачный пример, лучше использовать регулярные выражения.

kxgoo
На сайте с 29.02.2008
Offline
145
#2

К сожалению не работает, Parse error: syntax error, unexpected '[' in /***/index.php on line 19

строчка $output = explode('#end', $start[1])[0];

Но если даже ее убрать - то содержимое файла просто не инклудится с другого сайта, ничего не происходит.

MT
На сайте с 17.01.2017
Offline
22
#3

Используйте iconv или mb_convert_encoding для изменения кодировки символов.

kxgoo
На сайте с 29.02.2008
Offline
145
#4
MikeTheRaven:
Используйте iconv или mb_convert_encoding для изменения кодировки символов.

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

---------- Добавлено 21.02.2017 в 04:09 ----------

Даже можна бы было вывести содержимое файла base.html транслитом (латиницей), что тоже будет не плохо. Тогда проблема с кодировкой исчезнет. Как такое можно сделать?

lealhost
На сайте с 07.06.2014
Offline
136
#5
kxgoo:
К сожалению не работает, Parse error: syntax error, unexpected '[' in /***/index.php on line 19

строчка $output = explode('#end', $start[1])[0];

Но если даже ее убрать - то содержимое файла просто не инклудится с другого сайта, ничего не происходит.

Наверное, древняя версия PHP, тогда нужно изменить так, убедившись, что вхождения "#start" и "#end" действительно есть в отданной страничке:

<?php

$con = file_get_contents("http://site2.com/base.html");
$start = explode('#start', $con);
$output = explode('#end', $start[1]);

echo $output[0];

?>
kxgoo
На сайте с 29.02.2008
Offline
145
#6
lealhost:
Наверное, древняя версия PHP, тогда нужно изменить так, убедившись, что вхождения "#start" и "#end" действительно есть в отданной страничке:
<?php

$con = file_get_contents("http://site2.com/base.html");
$start = explode('#start', $con);
$output = explode('#end', $start[1]);

echo $output[0];

?>

Все работает, большое спасибо. ;)

Но к сожалению, проблему с кодировкой такая функция не решила(.

Вопрос остается открытым. Как вывести файл base.html для сайта site1.com в кодировке win1251, если кодировка самого файла utf-8? Или как вывести тот же файл транслитом? (тогда вопрос кодировни снимется)

L
На сайте с 10.02.2015
Offline
246
#7

Откройте для себя PhpQuery :)

totamon
На сайте с 12.05.2007
Offline
437
#8
kxgoo:
Вопрос остается открытым. Как вывести файл base.html для сайта site1.com в кодировке win1251, если кодировка самого файла utf-8?

выше же писали вам используйте iconv

echo iconv("UTF-8","windows-1251",$output[0]);
Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
kxgoo
На сайте с 29.02.2008
Offline
145
#9
totamon:
выше же писали вам используйте iconv

Так?

<?php echo file_get_contents("http://site2.com/base.html");
echo iconv("UTF-8","windows-1251",$output[0]);
?>

Нет, не работает(

S
На сайте с 23.05.2004
Offline
315
#10


echo iconv("UTF-8","windows-1251",file_get_contents("http://site2.com/base.html"));
Это просто подпись.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий