array_diff($arr1,$arr2)
配列の差分セットを計算するために使用されるphp配列関数の1つ
html画像タグの定期的な一致
sinaeditorで追加された画像削除操作
使用法の1つ、私は使用しています。 Sina tonight この機能は、エディターで記事を公開するプロセスで使用されます
問題の説明:
記事にはいくつかの写真がありますが、記事を追加する過程でウェブサイトの画像ディレクトリに自動的にアップロードされます。
記事の修正中に写真が削除された場合は、コード内にあります。 (すでにデータベースに保存されています);
のようなタグは削除されましたが、現時点では、特定の画像ファイルが
Web サイトに存在します。加工が必要です
対処方法:
最初: データベースから元の記事コンテンツを取得します
そこから画像のファイル名を取得します正規表現を使用します
メソッドは次のとおりです
コードをコピーします コードは次のとおりです:
public function getimgsinarticle($content)
{
$temp = array();
$imgs = array() ;
preg_match_all('/http [^d]*[d]+[.](jpg|gif|png)/',$content,$temp);
$temp = $temp[0];
if(! empty($temp[0] ))
{
for($i=0;$i {
$imgs[$i] = pathinfo($temp[$i]) ;
$imgs[$i ] = $imgs[$i]['basename'];
}
return $imgs;
}
else
{
return false;
}
}
通常のルールを説明します。まず http の 4 文字に一致し、その後、数字以外の文字を 1 つ以上一致させ、ドット (.) に一致し、jpg または gif または png で終わる一致を $congtent から検索します。結果は $temp に保存されます。
文字をデータベースに保存します。 $oldimgs という名前の配列に保存されます。これは改善されるべきだと思います。注: 私の写真の名前は次のようになります: "201111291322589013.jpg"
ステップ 2:
上記のようにユーザーが送信したコンテンツからすべての写真を見つけて、2 番目の配列を取得し、$newimgs という名前を付けます
arr1 と arr2 の差分セットのメソッドは次のとおりです--つまり、元のデータ内の画像は、ユーザーが新しく送信したコンテンツには存在しません。すると、この画像が削除されます。
コードは次のとおりです。
$oldimgs = $this->getimgsinarticle( $oldarticledata['article_content']); $ newimgs = $this->getimgsinarticle($data['articlecontent']); //print_r($newimgs); $newimgs = empty($newimgs)?array( ):$newimgs;
if($oldimgs! =false)
{
$diff = array_diff($oldimgs,$newimgs);
$diff = array_values($diff);
if(!empty($diff))
{for($ i = 0; $ i< count($ diff); $ i ++)
$ this-> delimg($ diff [$ i]、article_img_dir);以下の通り:
public function delimg($imgname,$dir)
{
@unlink($dir.'/'.$imgname);
return true;
}
like this 私の目標は達成されました。ユーザーが写真付きの記事を編集すると、その写真も Web サイトから削除されます。記事内の写真の名前を取得する方法は、記事の削除処理にも適用できます。 .
写真を削除する方法では、realpath(__FILE__)を使用して$dirにさまざまな「./」「../」を追加して、Webサイトのディレクトリからの相対的な写真ディレクトリを与えることができます
パスを取得するにはhtml、こちら 正規表現の書き方はあまり良くありません。勉強する必要があります。最近、正規表現に関する本を見つけました。『Mastering Regular Expressions, Third Edition』(Jeffrey E.F. Friedl 著、Yu Sheng 訳) (チェン)
http://www.bkjia.com/PHPjc/326760.htmlwww.bkjia.com
true
http://www.bkjia.com/PHPjc/326760.html
技術記事
array_diff($arr1,$arr2) は php の配列関数の 1 つで、配列の差分セットを計算するために使用されます。これは、sinaeditor によって追加された画像削除操作の 1 つです。今夜は Sina を使用します。