2016-04-25 4 views
-1

Я использовал старую систему управления контентом, в которой используется CKEditor с CKFinder, которая позволяет загружать изображения на сервер, однако она помещает полный URL-адрес в поле содержимого, а затем я сохраняю его базы данных.PHP Изменить местоположение изображения

Я недавно перестроил систему управления контентом и снова использовал CKEditor с CKFinder. В настоящее время я перемещаю базу данных и переставляю данные. Но я заметил, что 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, как называется ур-таблица, я предполагаю «страницу». Если это так, я обновил запрос. Надеюсь, эта помощь. –

0

Я нашел, как это сделать! Спасибо Álvaro Gonzá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(); 
Смежные вопросы