【PHP】画像サイズ変更の件で質問です。


PHPで自作のブログがあります。
その記事の中に、
<img width="100" height="100" src="×××.png" alt="">

のタグがいくつかあります。

【変更したいこと】
<img width="60" height="60" src="×××.png" alt="">

にPHPを使ってすべての記事の画像を一括に変換したいです!

アドバイスいただけると幸いです。

【参考までに・・・ワードプレスの時は、こちらのご解答をいただき解決しました。今回の質問はワードプレス環境ではありません。】
function change_view_imagesize($content) {
if((preg_match('#<img ([^>]+?)( (width|height)="100"){2}([^>]+)>#', $content)) and wp_is_mobile()) {
$content = preg_replace('#<img ([^>]+?)(?: (width|height)="100"){2}([^>]+)>#', '<img $1 width="60" height="60"$3>', $content);
}
return $content;
}
add_filter( 'the_content', 'change_view_imagesize' );

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2014/03/20 21:32:51
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:tukihatu No.1

回答回数180ベストアンサー獲得回数32

ポイント100pt

おそらく生成されたタグに対して全置換をかけたい、という質問だとおもうので、そう解釈して進めますね。
コメントの方も書いていますが、手動で関数を呼び出す形になります。add_filterはありませんので。
呼び出す関数はchange_view_imagesizeをそのまま使えると思います。( and wp_is_mobile()だけいらないので削除)

HTMLを表示するブログ内の関数を探し出し、

//$htmlはブログの内容
$html = change_view_imagesize($html);
print $html;

こう書きます。


しかし、HTMLを表示する関数を自力で探し出すのは面倒ですしスキルも少し必要です。
面倒であれば、PHPでするのではなく、javascriptを使ってみてはどうでしょう。
javascriptであれば、「html表示(PHPの処理・表示含む)が終わった後に発動する」命令、addEventListener(attachEvent)が使えます。これはワードパッドのadd_filterとほぼ一緒です。
http://dwm.me/archives/845


phpでどうしてもやりたい場合で分からないときは、環境情報を教えていただければ他の方も答えやすいと思います!
・使ってるブログのシステム、バージョン
・何か制限があればその制限

id:akakak

ありがとうございます。
javascriptで対応可能なんですね!
この辺りを勉強したいと思います!

2014/03/20 21:32:44
  • id:rouge_2008
    自作のブログがどのように作られているかが分からないと、具体的な回答はつかないと思います。
    記事データその物を変更するのではなく、表示時のみ変更されれば良いのでしたら、記事表示前にWordPressで使っているような関数を呼び出して実行します。
    どこでどのように呼び出すかは、自作ブログの仕組みにあわせてください。


    ※例えばCakePHPを利用しているのでしたら、適切なコールバックを利用すれば、一括で表示データの変更が可能です。

    ・CakePHPの典型的なリクエスト
    http://book.cakephp.org/2.0/ja/getting-started/a-typical-cakephp-request.html
    ※図2 典型的なCakeリクエストの「5.モデルがデータを取得すると、それはコントローラに送られます。 モデルのコールバックが設定されていれば、それが動作します。」または「コントローラのその他のコールバック(afterFilterなど)があれば、実行されます。 完全に表示されたコードは、リカルドさんのブラウザに表示されることになります。」のどちらかで実行すると良さそうです。

    ・コントローラ
    http://book.cakephp.org/2.0/ja/controllers.html
    ※「リクエストライフサイクルコールバック」参照

    ・コールバックメソッド (モデル)
    http://book.cakephp.org/2.0/ja/models/callback-methods.html
    ※データベースから取得したデータを変更する例が載っています。
  • id:akakak
    アドバイスありがとうございます!

    環境はフレームワークなどは使用していません。
    php で純粋に書き込んでいます。
    (言い方があっているかあやしいですが・・・・)
  • id:akakak
    ファイルは.php で動的サイトのブログです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません