ホームページ  >  記事  >  バックエンド開発  >  PHPを使用して記事内の画像を処理する方法

PHPを使用して記事内の画像を処理する方法

WBOY
WBOYオリジナル
2016-07-25 08:55:401134ブラウズ
  1. public function getimgsinarticle($content)
  2. {
  3. $temp = array();
  4. $imgs = array();
  5. preg_match_all('/http[^d]*[d]+ [.](jpg|gif|png)/',$content,$temp);
  6. $temp = $temp[0];
  7. if(!empty($temp[0]))
  8. {
  9. for($i =0;$i {
  10. $imgs[$i] = pathinfo($temp[$i]);
  11. $imgs[$i] = $imgs[$i][ 'basename'];
  12. }
  13. return $imgs;
  14. }
  15. else
  16. {
  17. return false;
  18. }
  19. }
コードをコピー

上記では、最初に http の 4 文字を一致させてから説明します。いくつかの数字以外の文字と一致します。 少なくとも 1 つの数字と一致し、1 つのドット (.) と一致し、jpg、gif、または png で終わる一致を $congtent から検索します。結果は $temp に保存されます。 元のデータの画像をデータベース内の $oldimgs という名前の配列に保存します。

これは改善の必要がありますが、保存後に 2 次元配列が出力されるため、少し使いにくいです。

説明、私の写真の名前はこれに似ています: "201111291322589013.jpg"

ステップ 2: ユーザーが送信したコンテンツからすべての画像を検索する方法は上記と同じで、2 番目の配列が取得され、$newimgs という名前が付けられます。 arr1とarr2の差分セットを求める方法は以下のとおりです。 --つまり、ユーザーが新たに投稿したコンテンツに元データ内の写真が存在しない場合、その写真は削除されます。

  1. $oldimgs = $this->getimgsinarticle($oldarticledata['article_content']);
  2. $newimgs = $this->getimgsinarticle($data['articlecontent']);
  3. //print_r($newimgs);
  4. $newimgs = empty($newimgs)?array():$newimgs;
  5. if($oldimgs!=false)
  6. {
  7. $diff = array_diff($oldimgs,$newimgs);
  8. $diff = array_values($diff);
  9. if(!empty($diff))
  10. {
  11. for($i=0;$i {
  12. $this-> delimg($diff[$i],ARTICLE_IMG_DIR);
  13. }
  14. }
  15. }
コードをコピー

画像を削除:

  1. public function delimg($imgname,$dir)
  2. {
  3. @unlink($dir.'/'.$imgname);
  4. return true;
  5. }
コードをコピー

ユーザーが画像付きの記事を編集した場合、その画像が削除されると、その画像もウェブサイトから削除されます。記事内の画像の名前を取得する方法は、削除のプロセスにも適用できます。記事。

写真を削除する方法では、realpath(__FILE__) に加えて $dir にさまざまな「./」「../」を使用して、Web サイトのディレクトリを基準とした相対的な写真ディレクトリを指定できます。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。