2016-04-25 17 views
-1

CKFinderでCKEditorを使用する古いコンテンツ管理システムを使用していましたが、画像をサーバーにアップロードできますが、フルURLにコンテンツボックスに入れてから保存しますデータベース。PHP Change Image Location

私は最近コンテンツ管理システムを再構築し、CKFinderでCKEditorを再度使用しています。私は現在、データベースを移動してデータを並べ替えるプロセスに入っています。しかし、私はこれらの画像のURLが間違っていることに気付きました。

私の質問は、URLを検索して置き換えることが可能であり、文字列ごとに複数回使用できるかどうかです。また、真ん中にはランダムなハッシュキーがあります。このハッシュキーはどうやって回避するのかが分かりません。なぜこの質問をしているのですか? URLは(未編集)だろう

http://www.oldwebsite.com/aknsnd8123nakndkna/upload/images/image.jpg 

私はURLを抽出し、へのパスを変更したい:私はスタートを切るだろうかわからないようにしています

http://www.newwebsite.com/images/uploaded/image.jpg 

と終わりに、中間部分をスキップします。または、最後にimage.jpgを取得するだけで、最初は新しいパスに入れます。

これまでのところ2行のコードしかありませんが、HTMLであることに気を付けてください。

$content = '<h1>'.$page['Page_Title'].'</h1>'; 
$content .= $page['Page_Content']; 

これは$page['Page_Content']リターンです:

<p style="text-align: center;"> 
    <img alt="" src="http://www.oldwebsite.com/aknsnd8123nakndkna/upload/images/image.jpg" style="width: 700px; height: 493px;" /> 
</p> 
<p style="text-align: center;"> 
    The Sports Stadium is an impressive addition to any event, catering for several sports keeping children entertained for hours. 
</p> 
+1

多くの情報を提供していません...ある種のデータベースまたはストレージシステムのデータを変更するための移行スクリプトを作成しますか? –

+0

私は現時点で移行スクリプトを書いています。私は古いデータベースからデータを取り出し、それを並べ替えてから新しいデータベースに挿入します。私が助けを求めているのは、新しいデータベースに送る前に、並べ替え中です。 – Sickaaron

+1

他のものはすべて明白であるようです...データベースに接続するPHPライブラリ(PDOには複数のエンジンのドライバがあります)、DOMDocumentなどのパーサーを使用してHTMLからリンクを抽出し、正規表現を処理する必要があります実際の差し替え –

答えて

1

は、私はあなたのテーブル構造が何であるかわかりません。古いデータベースで以下のようなmysqlクエリを実行して、パスを更新することができます。これがあなたを助けない場合は、テーブル構造を投稿してください。私は自分の答えを更新して喜んでします。

sql=" UPDATE page SET page_content = REPLACE(page_content, 'http://www.oldwebsite.com/aknsnd8123nakndkna/upload/images/', 'http://www.newwebsite.com/images/uploaded/')"; 

このヘルプが必要です。

+0

'Page_Content'カラムには、私の編集した質問に従ってHTMLが含まれています。それは働くだろうか?行にHTMLが含まれていても? – Sickaaron

+1

@Sickaaron、urテーブルの名前は何ですか、私は 'ページ'を想定しています。もしそうなら、私はクエリを更新しました。この助けを願っています。 –

0

私はそれを行う方法を見つけました!提案のÁlvaroGonzálezに感謝します!

$content = '<h1>'.$page['Page_Title'].'</h1>'; 
    $content .= $page['Page_Content']; 
    $html = new DOMDocument(); 
    $html->loadHTML($content); 
    foreach ($html->getElementsByTagName('img') as $image) { 
     $img = array_reverse(explode('/', $image->getAttribute('src'))); 
     $image->setAttribute('src', $website.'/images/uploaded/'.$img[0]); 
    } 
    $content = $html->saveHTML();