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

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

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

 

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

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

тема: Регулярное выражение выводящее всё между кавычками
 
 автор: pautina   (07.01.2012 в 10:03)   письмо автору
 
 

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

<?php  
 $str 
'<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 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>'
;  
     
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/ 
     // $matches[0] = $str2;
     // preg_match_all("/\"(.*?)\"/i", $str2, $matches);          
 
echo '<pre>';  
 
print_r($matches[0]); 
?>

Скрипт позволяет вывести все адреса рисунков

[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"
    ...

Мне нужно дополнить этот скрипт таким регулярным выражением который бы на выходе мог дать строки типа
http://www.photoshop-master.ru/lessons/les1677/1.jpg
http://www.photoshop-master.ru/lessons/les1677/2.jpg
http://www.photoshop-master.ru/lessons/les1677/3.jpg
А это регулярное выражение которое позволяет выводить все между кавычками.

  Ответить  
 
 автор: Slo_Nik   (07.01.2012 в 13:14)   письмо автору
 
   для: pautina   (07.01.2012 в 10:03)
 

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

<?php 
$str 
'src=" http://www.photoshop-master.ru/lessons/les1677/1.jpg"';
preg_match_all('#src="([^"]+)"#i'$str$matches); // показывает ссылку для изображения 
echo $matches[1][0]; // выводит http://www.photoshop-master.ru/lessons/les1677/1.jpg
// или
preg_match('#src="([^"]+)"#i'$str$matches); // показывает ссылку для изображения 
echo $matches[1]; // выводит http://www.photoshop-master.ru/lessons/les1677/1.jpg
?>

  Ответить  
 
 автор: pautina   (07.01.2012 в 15:29)   письмо автору
 
   для: Slo_Nik   (07.01.2012 в 13:14)
 

Эти выражения только для 1 строки действуют?
Или я чего не могу понять.

...
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/ 
     //$matches[0] = $str2;
     //preg_match_all("/\"(.*?)\"/i", $str2, $matches);
          
 echo '<pre>';  
 print_r($matches[0]); 
?>

Этот код позволяет вывести все рисунки из html кода
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"
...
 [21] => src="http://www.photoshop-master.ru/lessons/les1677/20.jpg"
)

Мне бы хотелось чтобы это в одном скрипте работало.
Сейчас я в 2 этапа делаю
1 скрипт который приведён выше.
2 скрипт который выводит всё между кавычками (он уже работает для ячейки (строки) где исходные данные $str = '
[0] => src="http://www.photoshop-master.ru/lessons/les1677/1.jpg"
[1] => src="http://www.photoshop-master.ru/lessons/les1677/2.jpg"...)

  Ответить  
 
 автор: Slo_Nik   (07.01.2012 в 18:53)   письмо автору
 
   для: pautina   (07.01.2012 в 15:29)
 

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

Берём Вашу строку с адресами, применяем рег. выражение и что мы получаем на выходе

<?php 
/* ваша строка с адресами */
 
$str '<p align="center"> 
    <img height="547" src="http://www.photoshop-master.ru/lessons/les1677/1.jpg" width="450" /></p> 
<p align="center"> 
    <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/5.jpg" width="450" /></p> 
<p align="center"> 
    <img height="272" src="http://www.photoshop-master.ru/lessons/les1677/6.jpg" width="450" /></p> 
<p>'

/* выдираем всё между кавычками */
preg_match_all('#src="([^"]+)"#i'$str$out);
/* смотрим, что возвращает preg_match_all()
   а возвращает эта функция многомерный массив */
echo "<pre>";
 
print_r($out);
echo 
"</pre>";
/*Array
(
    [0] => Array
        (
            [0] => src="http://www.photoshop-master.ru/lessons/les1677/1.jpg"
            [1] => src="http://www.photoshop-master.ru/lessons/les1677/5.jpg"
            [2] => src="http://www.photoshop-master.ru/lessons/les1677/6.jpg"
        )

    [1] => Array
        (
            [0] => http://www.photoshop-master.ru/lessons/les1677/1.jpg
            [1] => http://www.photoshop-master.ru/lessons/les1677/5.jpg
            [2] => http://www.photoshop-master.ru/lessons/les1677/6.jpg
        )

)
получается, что элемент $out[0] содержит массив полных вхождений рег. выражения,
а элемент $out[1] содержит массив вхождений первых круглых скобок, вот тут и хранятся все адреса картинок, всё то, что расположено между кавычками.
пропускаем через foreach() элемент $out[1] и на выходе получаем адреса в виде
http://www.photoshop-master.ru/lessons/les1677/6.jpg */
foreach($out[1] as $link){
 echo 
$link."<br />";
}
?>

  Ответить  
 
 автор: pautina   (08.01.2012 в 14:54)   письмо автору
 
   для: Slo_Nik   (07.01.2012 в 18:53)
 

Применительно к моей строке данный код не работает
в исходнике в строке данные типа

...
<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>'

Из такой исходной строки на выходе вашего кода получим не

    [0] => Array 
        ( 
            [0] => src="http://www.photoshop-master.ru/lessons/les1677/1.jpg" 
            [1] => src="http://www.photoshop-master.ru/lessons/les1677/5.jpg" 
            [2] => src="http://www.photoshop-master.ru/lessons/les1677/6.jpg" 
        ) 

    [1] => Array 
        ( 
            [0] => http://www.photoshop-master.ru/lessons/les1677/1.jpg 
            [1] => http://www.photoshop-master.ru/lessons/les1677/5.jpg 
            [2] => http://www.photoshop-master.ru/lessons/les1677/6.jpg 
        ) 

)

а

src="/lessons/les1677/1.jpg" 

а это не рабочая ссылка для рисунка.

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

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