Изменить содержание iframe

386
20 января 2017, 09:51

Чтобы получить контроль над содержанием подключенного к странице iframe был создан файл redirect.php с кодом:

$url = isset($_GET['url']) ? $_GET['url'] : false; // здесь нам надо получить сам адрес вставки
if (!$url) die(); // если его нет - ничего не делаем
$url = urldecode($url); // расдекодим все его вопросики и апресанды после передачи
$content = file_get_contents($url); // вся магия - получаем содержимое айфрейма
echo $content; // выводим измененное содержимое

Подключение iframe на веб-странице:

<iframe src="/redirect.php?url=http://site.ru/"></iframe>

Поиск строки в содержании айфрейме не срабатывает.

Как в айфрейме удалить ссылку на fonts.googleapis.com и JavaScript в head?

Такой способ не работает:

// поиск строки в содержании айфрейме
$pattern = '<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:300,700">';
// замена строки в айфрейме (в нашем случае пусто, т.е. удаляем)
$replacement = '';
// собираем в кучу
$content = str_replace($pattern, $replacement, $content);
Answer 1

Вообще то iframe был создан специально, чтобы подгружать страницу без изменений и данный тег вам не подойдет для этой цели. "Фреймы часто использовались для навигации по веб-сайту. При этом навигационная страница располагается в одном окне, а страницы с текстом — в другом" - Wiki. Сейчас их не используют поскольку для поисковых роботов они не годятся. Если вы хотите показать страницу c другого ресурса с небольшими изменениями вам необходимо вывести страницу в переменную, в этой переменной найти необходимый текст с помощью библеотеки DOM php - похожа на jqwery, либо с помощью регулярных выражений, а затем отдать пользователю. Самый простой пример

$site=file_get_contents('https://ya.ru');
READ ALSO
Покажите пример из SQL [требует правки]

Покажите пример из SQL [требует правки]

Как брать значении из ключей в БД в php?

244
Fatal error: Class &#39;Redis&#39; not found

Fatal error: Class 'Redis' not found

На сервере был установлен PHP 53 и к нему PHPRedis, на страницах обычный код <?php $redis = new Redis(); $redis->connect('127

340
Как обрабатывать такие ошибки?

Как обрабатывать такие ошибки?

Вот пример моего кода:

291
Перехват throw в JS

Перехват throw в JS

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

241