質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

2031閲覧

RSS取得時の混合コンテンツ解消について

退会済みユーザー

退会済みユーザー

総合スコア0

RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/07/28 03:12

編集2017/07/28 03:51

外部ブログ(wordpress)のRSSを取得し、HPのトップ画面(index.php)にブログの情報(サムネイル・タイトル・日付)を自動取得する処理を行いました。
HPはSSLになっていますが、読み込まれたサムネイルのURLが「http://」となっているため、混合コンテンツとなってしまいます。
ブログおよびブログ内画像のURLを確認したところ、ちゃんと「https://
」となっていました。また、index.phpに読み込む際のURLも「https://~」を指定しています。
どのようにすれば、混合コンテンツを解消できるでしょうか?
PHPに不慣れなもので申し訳ありませんが、何卒ご教授くださいますようお願いいたします。
下記がコードです。

<?php require_once "./Feed.php" ; $feed = new Feed ; $url = "https://●●●.jp/blog/feed/"; $rss = $feed->loadRss( $url ) ; $num = 3; $i = 0; $desW = 30; if ( $desW != 0){ $desW = ($desW*2)+2; } foreach( $rss->item as $item ) { if($i>=$num){ } else{ $title = $item->title ; $link = $item->link ; $timestamp = strtotime( $item->pubDate ) ; $description = $item->{"content:encoded"} ; if( preg_match_all('/<img([\s\S]+?)>/is', $description, $matches) ){ foreach( $matches[0] as $img ){ if ($img === reset($matches[0])) { if( preg_match('/src=[\'"](.+?jpe?g)[\'"]/', $img, $m) ){ $thumbnail = $m[1]; } } } } ?> <article> <a href="<?php echo $link; ?>" target="_blank"> <div style="background-image: url('<?php print $thumbnail; ?>');"></div> <p><?php echo date( "Y/m/d", $timestamp); ?></p> <header> <h3><?php echo $title; ?></h3> </header> </a> </article> <?php $i++; } } ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/07/28 03:20

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
退会済みユーザー

退会済みユーザー

2017/07/28 03:53

失礼いたしました。コードブロックで囲みました。
guest

回答2

0

ベストアンサー

wordpressプラグインの「Search Regex」を使って画像URLをhttpsに置き換えたところ、混合コンテンツが解消しました。

kei344様
このたびはアドバイスをいただき、誠にありがとうございました。

投稿2017/08/01 06:31

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

外部ブログのフィード内の画像がhttpsになっていないだけでは無いでしょうか。

投稿2017/07/28 17:20

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/07/31 01:36

ご回答ありがとうございます。 実は別HPも運営しており、そちらにもブログがあります。 問題のHP同様に、トップページにブログを読み込ませているのですが、そちらは混合コンテンツになっていません。 下記がそのコードです。 ※問題のHPでは、foreach( $rss->item as $item ){}内の $timestamp = strtotime( $item->pubDate ) ; の後に $description = $item->{"content:encoded"} ; というコードを付け足してあります。そうしないとそもそも画像が読み込めませんでした。 お手数をおかけしますが、お教えくださいますようお願いいたします。 ``` <?php require_once "./Feed.php" ; $feed = new Feed ; $url = "https://●●●.jp/blog/feed/"; $rss = $feed->loadRss( $url ) ; $num = 5; $i=0; $desW = 30; if ( $desW != 0){ $desW = ($desW*2)+2; } foreach( $rss->item as $item ) { if($i>=$num){ } else{ $title = $item->title ; $link = $item->link ; $timestamp = strtotime( $item->pubDate ) ; if( preg_match_all('/<img([\s\S]+?)>/is', $item->description, $matches) ){ foreach( $matches[0] as $img ){ if ($img === reset($matches[0])) { if( preg_match('/src=[\'"](.+?jpe?g)[\'"]/', $img, $m) ){ $thumbnail = $m[1]; } } } } ?> <div> <a href="<?php echo $link; ?>" target="_blank"> <div style="display:flex; border-bottom: 1px dotted #c9ad6b; padding-bottom: 5px;"> <div style="background-image: url(<?php print $thumbnail; ?>);"></div> <p><?php echo date( "Y/m/d", $timestamp); ?> <br><?php echo $title; ?></p> </div> </a> </div> <?php $i++; } } ?> ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問