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

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

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

 

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

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

тема: Вытаскивание рисунков из html кода
 
 автор: pautina   (01.01.2012 в 09:45)   письмо автору
 
 

Здравствуйте Уважаемое сообщество не поможете написать регулярное выражение для вытаскивания рисунков из html кода.

<?php 
 $str 
'<h1 style="text-align:center">Создаём абстрактное золотое кольцо в Фотошоп</h1><p align="left">
    В этом уроке я покажу вам, как создать абстрактную золотую сферу с эффектом дыма.</p>    
<p align="center">
    <img 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>'

     
/* preg_match_all('|<h1.*?>(.*)</h1>|sei', $str, $matches);      
     регулярное выражение выводит все между символами h1 */
    
preg_match_all('#<img\s+src\s*=\s*["\']?#i'$str$matches);  
echo 
'<pre>'
 
print_r($matches[1]);
?>

Из этой строки хотел бы получить

<img height="262" src="/lessons/les1689/01.jpg" width="450" />
<img height="23" src="tools/Elliptical Marquee.jpg" width="27" />
<img height="33" src="/lessons/les1689/02.jpg" width="442" />

За основу использую регулярное выражение
preg_match_all('#<img\s+src\s*=\s*["\']?#i', $str, $matches);  

Почему не выводятся рисунки не понятно?

  Ответить  
 
 автор: cheops   (01.01.2012 в 14:23)   письмо автору
 
   для: pautina   (01.01.2012 в 09:45)
 

А если вам полностью img-тэги нужны, может проще вообще так поступить
<?php  
   
...
   
preg_match_all('#<img[^>]+>#i'$str$matches);   
   echo 
'<pre>';  
   
print_r($matches[0]); 
?>
Или все-таки нужен только адрес изображения?

  Ответить  
 
 автор: pautina   (01.01.2012 в 18:06)   письмо автору
 
   для: cheops   (01.01.2012 в 14:23)
 

Хорошо, используя этот код мы можем вытащить все рисунки

<?php  
 $str 
'<h1 style="text-align:center">Создаём абстрактное золотое кольцо в Фотошоп</h1><p align="left"> 
    В этом уроке я покажу вам, как создать абстрактную золотую сферу с эффектом дыма.</p>     
<p align="center"> 
    <img 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>'
;  
     
/* preg_match_all('|<h1.*?>(.*)</h1>|sei', $str, $matches);       
     регулярное выражение выводит все между символами h1 */ 
     
preg_match_all('#<img[^>]+>#i'$str$matches);     
 echo 
'<pre>';  
 
print_r($matches[0]); 
?>

В результате выполнения скрипта имеем

<pre>Array
(
    [0] => <img src="/lessons/les1689/01.jpg" width="450" />
    [1] => <img height="23" src="tools/Elliptical Marquee.jpg" width="27" />
    [2] => <img height="33" src="/lessons/les1689/02.jpg" width="442" />
)

Скажите а какой код мне использовать чтобы к src="/lessons/les1689/01.jpg" прибавить http://www.photoshop-master.ru чтоб на выходе для всех рисунков иметь
http://www.photoshop-master.ru/lessons/les1689/01.jpg
Какой код сдесь использовать?

  Ответить  
 
 автор: cheops   (01.01.2012 в 18:35)   письмо автору
 
   для: pautina   (01.01.2012 в 18:06)
 

Просто при помощи функции str_replace() замените
src="
на
src="http://www.photoshop-master.ru/

  Ответить  
 
 автор: pautina   (02.01.2012 в 09:32)   письмо автору
 
   для: cheops   (01.01.2012 в 18:35)
 

Сейчас код имеет такой вид

<?php  
 $str 
'<h1 style="text-align:center">Создаём абстрактное золотое кольцо в Фотошоп</h1><p align="left"> 
    В этом уроке я покажу вам, как создать абстрактную золотую сферу с эффектом дыма.</p>     
<p align="center"> 
    <img 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>'
;  
     
/* preg_match_all('|<h1.*?>(.*)</h1>|sei', $str, $matches);       
     регулярное выражение выводит все между символами h1 */ 
     
preg_match_all('#<img[^>]+>#i'$str$matches); // регулярное выражение для вытаскивания рисунков, выводит все теги <img src="" ... />
     
$matches[0] = str_replace('src="''src="http://www.photoshop-master.ru/'$matches[0]);     
 echo 
'<pre>';  
 
print_r($matches[0]); 
?>

При выполнении скрипта

<pre>Array
(
    [0] => <img src="http://www.photoshop-master.ru//lessons/les1689/01.jpg" width="450" />
    [1] => <img height="23" src="http://www.photoshop-master.ru/tools/Elliptical Marquee.jpg" width="27" />
    [2] => <img height="33" src="http://www.photoshop-master.ru//lessons/les1689/02.jpg" width="442" />
)

Есть вот какой момент в адресе есть // как сделать проверку на кол-во слешев после http://www.photoshop-master.ru/ если слешев 2 то удаляем 1 лишний.
Как прописать это условие?

  Ответить  
 
 автор: cheops   (02.01.2012 в 13:04)   письмо автору
 
   для: pautina   (02.01.2012 в 09:32)
 

А вы сделайте две замены, одна
src="/lessons
на
src="http://www.photoshop-master.ru/lessons

А другая
src="tools
на
src="http://www.photoshop-master.ru/tools

  Ответить  
 
 автор: pautina   (02.01.2012 в 13:30)   письмо автору
 
   для: cheops   (02.01.2012 в 13:04)
 

Хорошо теперь на выходе получаем

<pre>Array
(
    [0] => <img height="547" src="http://www.photoshop-master.ru/lessons/les1677/1.jpg" width="450" />
    [1] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/2.jpg" width="450" />
    [2] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/3.jpg" width="450" />
    [3] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/4.jpg" width="450" />
    [4] => <img height="16" src="http://www.photoshop-master.ru/tools/brush.png" width="20" />
    [5] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/5.jpg" width="450" />
    [6] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/6.jpg" width="450" />
    [7] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/7.jpg" width="450" />
    [8] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/8.jpg" width="450" />
    [9] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/9.jpg" width="450" />
    [10] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/10.jpg" width="450" />
    [11] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/11.jpg" width="450" />
    [12] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/12.jpg" width="450" />
    [13] => <img height="17" src="http://www.photoshop-master.ru/tools/dodge.gif" width="19" />
    [14] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/13.jpg" width="450" />
    [15] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/14.jpg" width="450" />
    [16] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/15.jpg" width="450" />
    [17] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/16.jpg" width="450" />
    [18] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/17.jpg" width="450" />
    [19] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/18.jpg" width="450" />
    [20] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/19.jpg" width="450" />
    [21] => <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/20.jpg" width="450" />
)

Скажите а какой код использовать чтобы полученные рисунки скопировать в папку images/lessons/les1677/

  Ответить  
 
 автор: cheops   (02.01.2012 в 13:53)   письмо автору
 
   для: pautina   (02.01.2012 в 13:30)
 

>Скажите а какой код использовать чтобы полученные рисунки скопировать в папку images/lessons/les1677/
Собственно с этого бы стоило начать, так как по уму нужно выкинуть все что мы тут написали и составить новое регулярное выражение, которое бы стразу извлекало бы нужные адреса. Чтобы этого не делать можно воспользоваться текущим результатом и в цикле вырезать адреса из того, что есть при помощи регулярного выражения
#src="([^"]+)"#i
Полученные адреса следует подставлять в качестве первого аргумента функции copy(), в качестве второго аргумента следует подставлять путь к локальному положению файла изображения, получить имя файла проще всего при помощи функции basename().

  Ответить  
 
 автор: pautina   (02.01.2012 в 15:31)   письмо автору
 
   для: cheops   (02.01.2012 в 13:53)
 

Как прописать функцию copy и что делать с basename()
Такой вариант что то не подходит

...
preg_match_all('#src="([^"]+)"#i', $str, $matches); // показывает ссылку для изображения
     $matches[0] = str_replace('src="/lessons', 'src="http://www.photoshop-master.ru/lessons', $matches[0]); // к адресу ссылки прибавляем http://www.photoshop-master.ru/ 
     $matches[0] = str_replace('src="tools', 'src="http://www.photoshop-master.ru/tools', $matches[0]); // к адресу ссылки прибавляем http://www.photoshop-master.ru/ 
     $newfile='images/les1677';
     copy($matches[0], $newfile);  

  Ответить  
 
 автор: cheops   (02.01.2012 в 15:52)   письмо автору
 
   для: pautina   (02.01.2012 в 15:31)
 

Вам снала нужно от сюда
<img height="272" src="http://www.photoshop-master.ru/lessons/les1677/20.jpg" width="450" />
вырезать адрес
http://www.photoshop-master.ru/lessons/les1677/20.jpg
т.е. в цикле пройтись и создать новый массив с чистыми адресами, для этого нужно использовать новое регулярное выражение.

  Ответить  
 
 автор: pautina   (02.01.2012 в 16:30)   письмо автору
 
   для: cheops   (02.01.2012 в 15:52)
 

Смотрите я использовал такой скрипт

<?php  
 $str 
'<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>
    В этом уроке Photoshop, вы узнаете, как, используя различные техники, создать экспрессивную иллюстрацию, наполненную винтажным духом.</p>
<p>
    Вы узнаете, как применить несколько техник и эффектов, включая световые эффекты. Кроме техники исполнения, вы узнаете, как совместить цветовые оттенки, чтобы сделать сцену более драматичной. Некоторые шаги могут быть полезными для новичков, но почему бы не попробовать?</p>
<p>
    Как обычно, вы узнаете много интересного и полезного в этом уроке. Если вы хотите перейти на следующий уровень мастерства и поднять уровень своих знаний, этот урок Photoshop отлично подходит для вас. Давайте приступим!</p>
<p>
    <a href="http://www.icanbecreative.com/res/space-lady/cosmolady_final.jpg"><strong>Итоговый результат</strong></a></p>
<p align="center">
    <img height="547" src="/lessons/les1677/1.jpg" width="450" /></p>
<p>
    <strong>ШАГ 1.</strong> Создайте новый документ.<br />
    Давайте создадим новый документ с разрешением 300 DPI и размерами 4200px x 5100px. Мы используем изображение Космоса и Туманности:<br />
    <a href="http://moonchilde-stock.deviantart.com/gallery/4445978">Изображение Космоса и Туманностей</a></p>
<p>
    <strong><em>Примечание переводчика: </em></strong><em>1. залейте задний фон чёрным цветом 2. Переместите изображение с туманностью на наш документ 3. Уменьшите размеры изображения с космосом по сравнению с задним фоном, плавный переход между краями изображения и задним фоном мы проведём в Шаге 3. 4. Продублируйте изображение и поверните продублированный слой.</em></p>
<p align="center">
    <img height="272" src="/lessons/les1677/2.jpg" width="450" /></p>
<p align="center">
    <img height="272" src="/lessons/les1677/3.jpg" width="450" /></p>
<p>
    <strong>ШАГ 2. </strong>Мы добавим больше осветления и придадим галактике захватывающее настроение. С помощью уровней Ctrl + L, выставив следующие значения (9 &ndash; 1,00 &ndash; 255), и поменяем режим наложения на <strong>Осветление </strong>(screen).</p>
<p align="center">
    <img height="272" src="/lessons/les1677/4.jpg" width="450" /></p>
<p>
    <strong>ШАГ 3. </strong>Чтобы совместить края изображения с задним фоном, выберите инструмент <strong>Кисть <img height="16" src="tools/brush.png" width="20" /> </strong>(brush) размерами 200 рх., примените к слою слой- маске, на которой мы будет работать кистью. Зайдите в закладку &laquo;Кисти&raquo;. Установите значения для параметра <strong>Рассеивания</strong> (scattering) 121%, <strong>Управление</strong> (control) <strong>Отключить</strong> (off), <strong>Счётчик</strong><strong> </strong>(count) &ndash; 1, <strong>Колебание</strong><strong> счётчика</strong><strong> </strong>(count jitter) &ndash; 1%.</p>
<p>
    <strong><em>Примечание переводчика: </em></strong><em>1.В настройках кисти, поставьте галочку в параметрах <strong>Другая Динамика</strong> (</em><em>Other </em><em>Dynamics), <strong>Аэрограф </strong>(</em><em>Aerograph), <strong>Сглаживание</strong> (</em><em>Smoothing), настройки по умолчанию. 2. Закладку &laquo;Кисти&raquo; можно активировать через <strong>Меню &ndash; Окно &ndash; Кисти</strong> (</em><em>Menu &ndash; </em><em>Window- </em><em>Brushes). 3. Слой-маску применяем к слою с космосом, который расположен поверх заднего фона.</em></p>
<p align="center">
    <img height="272" src="/lessons/les1677/5.jpg" width="450" /></p>
<p align="center">
    <img height="272" src="/lessons/les1677/6.jpg" width="450" /></p>
<p>
    <strong>ШАГ 4. </strong>Переходим на слой-маску и на слой-маске прокрашиваем чёрной кистью непрозрачностью 20% края изображения, чтобы совместить с нашим чёрным задним фоном.</p>
<p align="center">
    <img height="272" src="/lessons/les1677/7.jpg" width="450" /></p>
<p>
    <strong>ШАГ 5. </strong>Добавьте ещё 2 изображения с туманностями, расположив их поверх всех слоёв, и повторите последние 3 шага.</p>
<p align="center">
    <img height="272" src="/lessons/les1677/8.jpg" width="450" /></p>
<p align="center">
    <img height="272" src="/lessons/les1677/9.jpg" width="450" /></p>
<p>
    <strong>ШАГ 6. </strong>Далее, выделите все слои (Ctrl + A), скопируйте (Ctrl+Shift + C) и вклейте на новый слой поверх всех слоёв, Поменяйте режим наложения на <strong>Осветление </strong>(screen), примените к объединённому слою слой&ndash;маску, залейте слой-маску чёрным цветом.</p>
<p align="center">
    <img height="272" src="/lessons/les1677/10.jpg" width="450" /></p>
<p>
    <strong>ШАГ 7. </strong>С помощью 100px круглой кисти (этот размер кисти можно изменить, в зависимости от области, которую вы хотите показать) и непрозрачностью кисти 20% , начните прокрашивать и показывая световые эффекты, как показано на скришоте ниже.</p>
<p align="center">
    <img height="272" src="/lessons/les1677/11.jpg" width="450" /></p>
<p>
    <strong>ШАГ 8. </strong>Продублируйте слой, далее, удалите слой маску и установите режим наложения на <strong>Нормальный </strong>(normal). Идём <strong>Фильтр &ndash; Другие &ndash; Цветовой контраст </strong>(Filter &ndash; Other &ndash; High Pass), <strong>Радиус </strong>(Radius) 0,6. Поменяйте режим наложения на <strong>Перекрытие </strong>(overlay).</p>
<p align="center">
    <img height="272" src="/lessons/les1677/12.jpg" width="450" /></p>
<p>
    <strong>&nbsp;</strong><strong>ШАГ 9. </strong>Слой со цветовым контрастом мы сделаем более ярче, поэтому, выберите инструмент <strong>Осветление </strong><img height="17" src="tools/dodge.gif" width="19" /> (Dodge tool), со следующими настройками <strong>Диапазон </strong>(Range) <strong>Света</strong> (highlights), экспозиция 12% и кисть размером 182px, &nbsp;и примените осветление на некоторых участках (этот размер кисти можно изменить, в зависимости от области, которую вы хотите показать).</p>
<p align="center">
    <img height="272" src="/lessons/les1677/13.jpg" width="450" /></p>
<p align="center">
    <img height="272" src="/lessons/les1677/14.jpg" width="450" /></p>
<p>
    <strong>ШАГ 10. </strong>Идём в корректирующие слои и применим <strong>Цветовой тон / Насыщенность </strong>(Hue Saturation) для придания изображению дополнительных новых цветовых оттенков. Вы также можете применить кисть и слой- маски для получения дополнительных цветовых оттенков. Используйте цветовые оттенки, которые вам больше всего нравятся и поиграйте с различными корректирующими слоями.</p>
<p>
    <strong><em>Примечание переводчика: </em></strong><em>1. чёрной кистью прокрашивайте участки на слой-маске корректирующего слоя, которые вы хотите проявить или показать 2. Создайте группу и поместите все слои, связанные с космосом и туманностями в созданную группу.</em></p>
<p align="center">
    <img height="272" src="/lessons/les1677/15.jpg" width="450" /></p>
<p align="center">
    <img height="272" src="/lessons/les1677/16.jpg" width="450" /></p>
<p>
    <strong>ШАГ 11. </strong>В этом шаге нам понадобится изображение <a href="http://www.istockphoto.com/stock-photo-3382925-aviator-helmet-girl">девушки-авиатора</a> . Вы можете купить изображение девушки- авиатора или использовать любое другое изображение, которые вы хотите.</p>
<p>
    <strong><em>Примечание переводчика: </em></strong><em>Изображение было удалено автором, я нашёл для вас ссылку на изображение девушки авиатора или вы можете использовать свои изображения, или сами поискать на стоковых сайтах. </em><br />
    <em><a href="http://www.123rf.com/photo_924883_picture-of-topless-pink-hair-girl-in-aviator-helmet.html">Изображение девушки авиатора</a>.&nbsp;</em></p>
<p>
    <em>Переместите девушку на наш документ и примените Трансформацию&nbsp; - Отразить по горизонтали.&nbsp;</em></p>
<p align="center">
    <img height="272" src="/lessons/les1677/17.jpg" width="450" /></p>
<p>
    <strong>ШАГ 12. </strong>Примените корректирующий слой <strong>Цветовой тон / Насыщенность </strong>(Hue/Saturation (Ctrl + U) к изображению с девушкой и примените настройки, которые указаны на скриншоте ниже. Далее, идём <strong>Меню &ndash; Редактирование &ndash; Ослабить Цветовой тон / Насыщенность </strong>(Menu &ndash; Edit &ndash; Fade Hue/Saturation (Ctrl + Shift+F). Ещё раз примените корректирующий слой <strong>Цветовой тон / Насыщенность </strong>(Hue/Saturation (Ctrl + U) и примените настройки, которые указаны на скриншоте ниже:.</p>
<p>
    <strong><em>Примечание переводчика: </em></strong><em>1. Корректирующий слои создаём через <strong>Изображение &ndash; Коррекция &ndash; Цветовой тон / Насыщенность </strong>(</em><em>Image &ndash; </em><em>Correction - </em><em>Hue/</em><em>Saturation) 2. Когда применяем функцию ослабить, применяем следующие настройки: Режим наложения <strong>Мягкий Свет </strong>(</em><em>Soft </em><em>Light), <strong>Непрозрачность </strong>(</em><em>Opacity) 60 %). После каждого применения корректирующего слоя, применяйте функцию <strong>Ослабить </strong>(</em><em>fade).</em></p>
<p align="center">
    <img height="272" src="/lessons/les1677/18.jpg" width="450" /></p>
<p align="center">
    <img height="272" src="/lessons/les1677/19.jpg" width="450" /></p>
<p align="center">
    <img height="272" src="/lessons/les1677/20.jpg" width="450" /></p>
<p>'
;  
     
/* preg_match_all('|<h1.*?>(.*)</h1>|sei', $str, $matches);       
     регулярное выражение выводит все между символами h1 */ 
     // preg_match_all('#<img[^>]+>#i', $str, $matches); // регулярное выражение для вытаскивания рисунков, выводит все теги <img src="" ... />
     
preg_match_all('#src="([^"]+)"#i'$str$matches); // показывает ссылку для изображения
     
$matches[0] = str_replace('src="/lessons''src="http://www.photoshop-master.ru/lessons'$matches[0]); // к адресу ссылки прибавляем http://www.photoshop-master.ru/ 
     
$matches[0] = str_replace('src="tools''src="http://www.photoshop-master.ru/tools'$matches[0]); // к адресу ссылки прибавляем http://www.photoshop-master.ru/ 
     // $newfile='images/les1677';
     // copy($matches[0], $newfile);  
 
echo '<pre>';  
 
print_r($matches[0]); 
?>

В результате его выполнения имеем

Array
(
    [0] => src="http://www.photoshop-master.ru/lessons/les1677/1.jpg"
    [1] => src="http://www.photoshop-master.ru/lessons/les1677/2.jpg"
    [2] => src="http://www.photoshop-master.ru/lessons/les1677/3.jpg"
    [3] => src="http://www.photoshop-master.ru/lessons/les1677/4.jpg"
    [4] => src="http://www.photoshop-master.ru/tools/brush.png"
    [5] => src="http://www.photoshop-master.ru/lessons/les1677/5.jpg"
    [6] => src="http://www.photoshop-master.ru/lessons/les1677/6.jpg"
    [7] => src="http://www.photoshop-master.ru/lessons/les1677/7.jpg"
    [8] => src="http://www.photoshop-master.ru/lessons/les1677/8.jpg"
    [9] => src="http://www.photoshop-master.ru/lessons/les1677/9.jpg"
    [10] => src="http://www.photoshop-master.ru/lessons/les1677/10.jpg"
    [11] => src="http://www.photoshop-master.ru/lessons/les1677/11.jpg"
    [12] => src="http://www.photoshop-master.ru/lessons/les1677/12.jpg"
    [13] => src="http://www.photoshop-master.ru/tools/dodge.gif"
    [14] => src="http://www.photoshop-master.ru/lessons/les1677/13.jpg"
    [15] => src="http://www.photoshop-master.ru/lessons/les1677/14.jpg"
    [16] => src="http://www.photoshop-master.ru/lessons/les1677/15.jpg"
    [17] => src="http://www.photoshop-master.ru/lessons/les1677/16.jpg"
    [18] => src="http://www.photoshop-master.ru/lessons/les1677/17.jpg"
    [19] => src="http://www.photoshop-master.ru/lessons/les1677/18.jpg"
    [20] => src="http://www.photoshop-master.ru/lessons/les1677/19.jpg"
    [21] => src="http://www.photoshop-master.ru/lessons/les1677/20.jpg"
)

Как подкорректировать код скрипта?

  Ответить  
 
 автор: pautina   (03.01.2012 в 13:10)   письмо автору
 
   для: pautina   (02.01.2012 в 16:30)
 

Скажите как описать регулярное выражение которое бы из строки
src="http://www.photoshop-master.ru/lessons/les1677/1.jpg"

Вырезало бы всё между кавычками и ставляло
http://www.photoshop-master.ru/lessons/les1677/1.jpg

Можно или регулярное выражение использовать или новую строку создавать где бы удалялись первые 5 символов и последний символ
пробовал и так и так где то ошибка
preg_match_all('|<".*?>(.*)<">|sei',  $matches[0], $matches);

$newstr = substr($matches[0], 5, (lenght ($matches[0])-1))

  Ответить  
 
 автор: pautina   (04.01.2012 в 16:02)   письмо автору
 
   для: pautina   (03.01.2012 в 13:10)
 

Посмотрите я использовал этот скрипт

<?php   
 $str 
'<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> 
    В этом уроке Photoshop, вы узнаете, как, используя различные техники, создать экспрессивную иллюстрацию, наполненную винтажным духом.</p> 
<p> 
    Вы узнаете, как применить несколько техник и эффектов, включая световые эффекты. Кроме техники исполнения, вы узнаете, как совместить цветовые оттенки, чтобы сделать сцену более драматичной. Некоторые шаги могут быть полезными для новичков, но почему бы не попробовать?</p> 
<p> 
    Как обычно, вы узнаете много интересного и полезного в этом уроке. Если вы хотите перейти на следующий уровень мастерства и поднять уровень своих знаний, этот урок Photoshop отлично подходит для вас. Давайте приступим!</p> 
<p> 
    <a href="http://www.icanbecreative.com/res/space-lady/cosmolady_final.jpg"><strong>Итоговый результат</strong></a></p> 
<p align="center"> 
    <img height="547" src="/lessons/les1677/1.jpg" width="450" /></p> 
<p> 
    <strong>ШАГ 1.</strong> Создайте новый документ.<br /> 
    Давайте создадим новый документ с разрешением 300 DPI и размерами 4200px x 5100px. Мы используем изображение Космоса и Туманности:<br /> 
    <a href="http://moonchilde-stock.deviantart.com/gallery/4445978">Изображение Космоса и Туманностей</a></p> 
<p> 
    <strong><em>Примечание переводчика: </em></strong><em>1. залейте задний фон чёрным цветом 2. Переместите изображение с туманностью на наш документ 3. Уменьшите размеры изображения с космосом по сравнению с задним фоном, плавный переход между краями изображения и задним фоном мы проведём в Шаге 3. 4. Продублируйте изображение и поверните продублированный слой.</em></p> 
<p align="center"> 
    <img height="272" src="/lessons/les1677/2.jpg" width="450" /></p> 
<p align="center"> 
    <img height="272" src="/lessons/les1677/3.jpg" width="450" /></p> 
<p> 
    <strong>ШАГ 2. </strong>Мы добавим больше осветления и придадим галактике захватывающее настроение. С помощью уровней Ctrl + L, выставив следующие значения (9 &ndash; 1,00 &ndash; 255), и поменяем режим наложения на <strong>Осветление </strong>(screen).</p> 
<p align="center"> 
    <img height="272" src="/lessons/les1677/4.jpg" width="450" /></p> 
<p> 
    <strong>ШАГ 3. </strong>Чтобы совместить края изображения с задним фоном, выберите инструмент <strong>Кисть <img height="16" src="tools/brush.png" width="20" /> </strong>(brush) размерами 200 рх., примените к слою слой- маске, на которой мы будет работать кистью. Зайдите в закладку &laquo;Кисти&raquo;. Установите значения для параметра <strong>Рассеивания</strong> (scattering) 121%, <strong>Управление</strong> (control) <strong>Отключить</strong> (off), <strong>Счётчик</strong><strong> </strong>(count) &ndash; 1, <strong>Колебание</strong><strong> счётчика</strong><strong> </strong>(count jitter) &ndash; 1%.</p> 
<p> 
    <strong><em>Примечание переводчика: </em></strong><em>1.В настройках кисти, поставьте галочку в параметрах <strong>Другая Динамика</strong> (</em><em>Other </em><em>Dynamics), <strong>Аэрограф </strong>(</em><em>Aerograph), <strong>Сглаживание</strong> (</em><em>Smoothing), настройки по умолчанию. 2. Закладку &laquo;Кисти&raquo; можно активировать через <strong>Меню &ndash; Окно &ndash; Кисти</strong> (</em><em>Menu &ndash; </em><em>Window- </em><em>Brushes). 3. Слой-маску применяем к слою с космосом, который расположен поверх заднего фона.</em></p> 
<p align="center"> 
    <img height="272" src="/lessons/les1677/5.jpg" width="450" /></p> 
<p align="center"> 
    <img height="272" src="/lessons/les1677/6.jpg" width="450" /></p> 
'
;   
     
/* preg_match_all('|<h1.*?>(.*)</h1>|sei', $str, $matches);        
     регулярное выражение выводит все между символами h1 */  
     // preg_match_all('#<img[^>]+>#i', $str, $matches); // регулярное выражение для вытаскивания рисунков, выводит все теги <img src="" ... /> 
     
preg_match_all('#src="([^"]+)"#i'$str$matches); // показывает ссылку для изображения 
     
$matches[0] = str_replace('src="/lessons''src="http://www.photoshop-master.ru/lessons'$matches[0]); // к адресу ссылки прибавляем http://www.photoshop-master.ru/  
     
$matches[0] = str_replace('src="tools''src="http://www.photoshop-master.ru/tools'$matches[0]); // к адресу ссылки прибавляем http://www.photoshop-master.ru/  
     // $newfile='images/les1677'; 
     // copy($matches[0], $newfile);   
 
echo '<pre>';   
 
print_r($matches[0]);  
?>

На выходе в скрипте имеем

Array 

    [0] => src="http://www.photoshop-master.ru/lessons/les1677/1.jpg" 
    [1] => src="http://www.photoshop-master.ru/lessons/les1677/2.jpg" 
    [2] => src="http://www.photoshop-master.ru/lessons/les1677/3.jpg" 
    [3] => src="http://www.photoshop-master.ru/lessons/les1677/4.jpg" 
    ...
    [21] => src="http://www.photoshop-master.ru/lessons/les1677/20.jpg" 
)


Хотелось бы вместе с вами сделать вот что

1) Написать регалярное выражение которое бы из строки src="http://www.photoshop-master.ru/lessons/les1677/1.jpg" оставляло только http://www.photoshop-master.ru/lessons/les1677/1.jpg
Здесь Можно или регулярное выражение использовать или новую строку создавать где бы удалялись первые 5 символов и последний символ

2) Как только рабочие адреса рисунков у нас есть, нужно копировать эти рисунки в определённую папку images/lessons/les1677/ пустая папка будет создана там заранее, но скрипту нужно еще донести в какую папку копировать все рисунки les1677, это тоже нужно описать регулярным выражением.

  Ответить  
 
 автор: kosta_in_net   (05.01.2012 в 17:07)   письмо автору
 
   для: pautina   (04.01.2012 в 16:02)
 

У меня аналогичная тема http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=84251&page=1 . Там есть ответ на вопрос.

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

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