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

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

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

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

Q&A

解決済

3回答

12596閲覧

phpでHTML内を置換したい

fjrght

総合スコア21

PHP

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

0グッド

0クリップ

投稿2016/12/28 11:21

編集2016/12/28 11:22

スクレイピングでhtmlが入った変数の中のa要素が画像の場合にimg要素を入れたい

<a href="abc.jpg">abc.jpg</a> の場合に <a href="abc.jpg"><img src="abc.jpg"></a> のような形にしたいです
試したこと $html = 取得したHTML $link = '<a href="abc.jpg">abc.jpg</a>'; $imglink = '<a href="abc.jpg"><img src="abc.jpg"></a>'; str_replace($link,$imglink,$html); ほかに $replace = preg_replace("/<a>([^<]+)<\/a>/",$imglink,$html); を試しましたが置換されませんでした。

なにかいい方法はありますでしょうか。
よろしくお願いします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

スプレイピングしたHTMLを変更したいということですよね
正規表現ではなくDomDocumentを使って実現してみました。

php

1$dom = new DOMDocument(); 2$dom->loadHTML($html); 3 4$xpath = new DOMXpath($dom); 5$nodes = $xpath->query('//a'); 6foreach ($nodes as $node) { 7 if(preg_match('/\.(jpg|png)$/', $node->nodeValue)) { 8 $src = $node->nodeValue; 9 $img = $dom->createElement('img'); 10 $img->setAttribute('src', $src); 11 $node->nodeValue = null; 12 $node->appendChild($img); 13 } 14} 15var_dump($dom->saveHTML());

動くpaiza.ioのサンプル

投稿2016/12/28 23:56

popobot

総合スコア6586

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

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

fjrght

2016/12/29 04:02

ありがとうございますまさにこれでした 大変助かります。ありがとうございました。
guest

0

早い話、phpの処理結果をhtmlで反映させたいのですよね。
方法は2つあります。
1つは、ページファイルのファイル名の「.html」を「.php」にして、phpページとして動作させる。
例えば、
<a href="abc.jpg"><img src="abc.jpg"></a>というHTMLを出力したければ
【PHP】
$imgfile = 'abc.jpg';
echo '<a href="abc.jpg"><img src="'.$imgfile.'"></a>';

純粋のHTMLファイルにPHPの変数を表示することはできません。
しかし、javasvriptを使ってHTMLに埋め込むことで表示できます。
それが、2つ目の方法です。
同じように
<a href="abc.jpg"><img src="abc.jpg"></a>というHTMLを出力したければ

埋め込みコードをHTMLファイルの表示したいところに挿入します。
埋め込みコード:<script type="text/javascript" src="<phpのURL>"></script>

phpファイルの最後に
$imgfile = 'abc.jpg';
$out = '<a href="abc.jpg"><img src="'.$imgfile.'"></a>';
echo "document.write($out)';

試して見てください。

投稿2016/12/28 12:37

KazutoshiOhashi

総合スコア125

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

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

0

こういうことじゃなくてですか?

PHP

1$output = str_replace($link,$imglink,$html); 2echo $output; // 置換結果

投稿2016/12/28 11:59

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問