Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: php обработчик для копирования рисунков
 
 автор: pautina   (30.12.2011 в 15:33)   письмо автору
 
 

Здравствуйте Уважаемое сообщество.
Хотел бы написать php обработчик которы бы копировал все рисунки с определённого адреса (http://www.photoshop-master.ru/lessons.php?rub=1&id=1689) которые содержатся между тегами
<div class="Text">
<img height="33" src="/lessons/les1689/02.jpg" width="442" />
<img height="340" src="/lessons/les1689/03.jpg" width="450" />

....
<img height="262" src="/lessons/les1689/01.jpg" width="450" />
</div> 

рисунки хотел бы копировать в папку images например
Ни подскажете от какого кода мне отталкиваться?

  Ответить  
 
 автор: pautina   (31.12.2011 в 10:13)   письмо автору
 
   для: pautina   (30.12.2011 в 15:33)
 

Смотрите у меня будет таблица category1 БД photoshop-portal, в поле Field 7 этой таблицы будет содержаться html код определённой страницы
т.е. содержимое одной ячейки Field 7 (для страницы http://www.photoshop-master.ru/lessons.php?rub=1&id=1689) имеет вид

<div class="Text">                    
<div id="demotip">&nbsp;</div>  
<div class="Gadget2"><div class="Gadget2SmoothTopLine"><div class="Gadget2SmoothTopLeft"><div class="Gadget2SmoothTopRight">&nbsp;<img src="images/content-smooth-top-right.gif"></div></div></div><div class="Gadget2Content"><div class="Gadget2ContentLeft"><div class="Gadget2ContentRight"><!-- Content --><div class="TextInside">        
<br />        <a id="printPage" href="http://www.photoshop-master.ru/lessons.php?rub=3&id=1055"><img src="/img/print.png" alt="распечатать" /></a>
<p><strong><a href="/lessons.php">Уроки Photoshop</a></strong> &#187; <strong><a href="/lessons.php?rub=1">Рубрика: Эффекты</a></strong></p><br />

<h1 style='text-align:center'>Создаём абстрактное золотое кольцо в Фотошоп</h1><p align="left">
    В этом уроке я покажу вам, как создать абстрактную золотую сферу с эффектом дыма.</p>
<p align="center">
    <img height="262" src="/lessons/les1689/01.jpg" width="450" /></p>
<p>
    Для урока вам понадобятся <a href="http://qbrushes.net/smoke-fire/revnart-smoke-brushes/">специальные кисти</a>.</p>
<p>
    <strong>Шаг 1.</strong> Создаем новый документ любого размера с черным фоном. Создаем новый слой и берем <strong>Elliptical </strong><strong>Marquee </strong><strong>Tool</strong> <img height="23" src="tools/Elliptical Marquee.jpg" width="27" /> (Овальное выделение) (M) с такими параметрами:</p>
<p align="center">
    <img height="33" src="/lessons/les1689/02.jpg" width="442" /></p>
<p>
...
</div> <!-- for div class="Text"--> 

Таких ячеек уменя 20 штук, и во всех 20 ячейках хранится свой html код для страниц
http://www.photoshop-master.ru/lessons.php?rub=1&id=1689
http://www.photoshop-master.ru/lessons.php?rub=1&id=1677
http://www.photoshop-master.ru/lessons.php?rub=1&id=1661
...
http://www.photoshop-master.ru/lessons.php?rub=1&id=1424
Мне нужно написать php обработчик который бы копировал все рисунки из каждой ячейки в определённую папку.
Рисунков там несколько, т.е. для каждой ячейки после её обновления мы

1) должны получить массив типа
<img height="33" src="/lessons/les1689/02.jpg" width="442" />
<img height="23" src="tools/Elliptical Marquee.jpg" width="27" />
<img height="33" src="/lessons/les1689/02.jpg" width="442" />

Здесь пишем регулярное выражение которое из всего содержимого ячейки вырезает всё что содержится в <img .../>

2) Дальше из массива с img мы должны оставить только текстовые адреса самих рисунков
/lessons/les1689/02.jpg
tools/Elliptical Marquee.jpg (если в коде нет слеша то его нужно поставить 1 символом)
/lessons/les1689/02.jpg

Это условие тоже описываем регулярным выражением и из массива <img .../> вырезать только то что содержится в src между кавычками.

3) К получившимся текстовым адресам самих рисунков мы прикрепляем http://www.photoshop-master.ru в итоге должно получится
http://www.photoshop-master.ru/lessons/les1689/02.jpg
[url]http://www.photoshop-master.ru/tools/Elliptical Marquee.jpg[/url]
...
http://www.photoshop-master.ru/lessons/les1689/02.jpg
Таким образом мы получим массив всех рисунков для определённой записи, эти рисунки будут доступны (по адресу можно зайти на сам рисунок)

4) и поледним этапом нужно скопировать все рисунки в папку
images/lessons/les1689 (это для 1 материала http://www.photoshop-master.ru/lessons.php?rub=1, для другого материала рисунки копируются в другую папку)
папка lessons и вложенные в неё напки les1689 (для всех материалов) будут уже созданы, нужно только скопировать туда рисунок, пути там похожи добавляется только images.

За основу можно взять этот участок кода.
<?php   
  $conn 
mysql_connect ("localhost""root"""
            or die (
"Соединение не установлено!"); 
  
mysql_select_db("bd_photoshop-portal"$conn); 
  
  
$query "SELECT * FROM category1";   
  
$cat mysql_query($query);   
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
  if(
mysql_num_rows($cat))   
  {   
    while(
$catagory mysql_fetch_assoc($cat)) 
    {   
      
// Осуществляем преобразование URL
      
      
preg_match('#href="(.*)"#siU'$catagory['Field 2'], $matches);  
      
// найденное совпадение сохраняется в $matches, для этого оно в функцию и передается 
      // и брать его потом для запроса нужно именно оттуда 
      
$newField_2 mysql_escape_string('http://www.photoshop-master.ru/' $matches[1]);
       
      
// Запрос для обновления 
      
$query "UPDATE category1   
                SET `Field 2` = '
{$newField_2}'   
                WHERE ID = 
{$catagory['ID']}";   
      if(!
mysql_query($query))   
      {   
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
      } 
      echo 
'Запрос выполнен успешно';   
    }   
  }   
?> 

Здесь содержимое ячейки обновляется по определённому условию
разница в том что нам на выходе нужно данные для каждой ячейки записывать в массив, т.к. рисунков несколько и рисунки нужно копировать между тегами <div class="Text">...</div> .
Ни подскажете как это сделать?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования