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

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

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

 

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

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

тема: вытаскивать текст между <DIV class=s> и <BR><CITE>
 
 автор: icqheart   (11.09.2008 в 14:12)   письмо автору
 
 

Здравствуйте!
мне нужно написать регулярку, которая бы вытаскивала текст между <DIV class=s> и <BR><CITE> Помогите составить рег.выражение, пожалуйста!
<DIV class=s>An automobile or motor <EM>car</EM> is a wheeled motor vehicle
for transporting passengers <B>.....</B> The first electric <EM>cars</EM> were
built around 1832, well before internal
<B>...</B><BR><CITE>

  Ответить  
 
 автор: AcidTrash   (11.09.2008 в 17:43)   письмо автору
 
   для: icqheart   (11.09.2008 в 14:12)
 

Если class в div будет один и тот же, то
<pre>
<?
$text 
="text<div class=s>An automobile or motor <EM>car</EM> is a wheeled motor vehicle
for transporting passengers <B>.....</B> The first electric <EM>cars</EM> were
built around 1832, well before internal
<B>...</B><BR><CITE>text2"
;
preg_match_all("#<DIV class=s>(.+)<br><cite>#isU",$text,$out);
print_r($out);
?>

  Ответить  
 
 автор: icqheart   (11.09.2008 в 18:37)   письмо автору
 
   для: AcidTrash   (11.09.2008 в 17:43)
 

большое спасибо, AcidTrash! почему-то ничего не выводится. хотя вроде целиком листинг правильный, хотя последнюю его часть я не могу понять. Посмотрите, пожалуйста, может быть где-то в другом месте ошибка?
<?php 

    
//Объявляем функцию парсинга выдачи
    
function parse_snip($query)
    {
    
        
$request 'http://www.google.com/search?hl=en&q='.urlencode(trim($query)); //какой урл передавать в cURL
        
$ch curl_init(); //инициализация переменной для cURL
         
        //параметры запроса
         
curl_setopt($ch,CURLOPT_URL,$request); //задаем урл который будем парсить
         
curl_setopt($ch,CURLOPT_TIMEOUT,20); //таймаут, если не отвечает в течение такого-то времени, рвем соединение
         
curl_setopt($ch,CURLOPT_REFERER,"http://www.google.com/"); //типа мы пришли с гугл.ком
         
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8"); //типа это такой вот наш браузер (фаерфокс)
         
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //не показывать страницу в браузере, а записать в переменную $result
         
$result=curl_exec($ch); //делаем запрос
        
        //Регулярка которая указывает на снипеты    
        
$pattern '#<DIV class=s>(.+)<br><cite>#isU';
                                
                if(
preg_match_all($pattern$result$matches))
                
print_r($matches);
                {
                            for (
$i=0$i<count($matches[0]); $i++)
                            {
                                
$link $matches[2][$i];
                                
                                
$serp[] = $link;
                            }
                }
                break;
    
        
        return 
$serp;
    }
    
//Стартуем функцию парсинга
    
parse_snip("car");
?>

  Ответить  
 
 автор: xx77   (11.09.2008 в 20:53)   письмо автору
 
   для: icqheart   (11.09.2008 в 18:37)
 

посмотрите всё содержание полученной страницы , например так
<?php
#######################
// никак не определяется $query -------- $query = '';
########################
$request 'http://www.google.com/search?hl=en&q='.urlencode(trim($query));
$ch curl_init();
 
curl_setopt_array$ch
    array(
         
CURLOPT_URL => $request,
         
CURLOPT_TIMEOUT => 20,
         
CURLOPT_REFERER => "http://www.google.com/",
         
CURLOPT_USERAGENT => "Opera/9.52 (Windows; U; ru)",
         
CURLOPT_RETURNTRANSFER => 1
    
));
         
         
$result=curl_exec($ch);
print 
'<hr>' htmlspecialchars($result);
?>

и увидите что Вы получаете
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.com/webhp?hl=en">here</A>. </BODY></HTML>

Upd // поправлял

  Ответить  
 
 автор: icqheart   (11.09.2008 в 21:28)   письмо автору
 
   для: xx77   (11.09.2008 в 20:53)
 

запустил. дествительно, показывает 302 Moved. что это значит? что гугл мне не дает смотреть страницу?

я когда в свой код, который привел ранее, вставляю вместо регулярки просто "/auto/", то получается парсить это слово.
кстати, переменную $query сюда просто случайно не привел. у себя я ей давал значение:
$query= "cars";

  Ответить  
 
 автор: xx77   (11.09.2008 в 22:28)   письмо автору
 
   для: icqheart   (11.09.2008 в 21:28)
 

> <DIV class=s> и <BR><CITE>

я не нашёл такого в коде страницы

<?php
$query 
'cars';
########################
$request 'http://www.google.com/search?hl=en&q='.urlencode(trim($query));
$ch curl_init();

 
curl_setopt_array$ch
    array(
         
CURLOPT_URL => $request,
         
CURLOPT_TIMEOUT => 20,
         
CURLOPT_REFERER => "http://www.google.com/",
         
CURLOPT_USERAGENT => "Opera/9.52 (Windows; U; ru)",
         
CURLOPT_RETURNTRANSFER => 1
    
));

$result=curl_exec($ch);

    if    ( 
preg_match('#<ol>.*</ol>#s'$result$result))
print 
'<pre>' htmlspecialchars($result[0]) . '<hr>'## наверное взять надо отсюда
    
    
preg_match_all('#<h3 class=r>.*?(?=<cite>)#s'$result[0], $result);
    
print_r($result); ## наверное примерно такое
    
}
?>

  Ответить  
 
 автор: icqheart   (12.09.2008 в 21:42)   письмо автору
 
   для: xx77   (11.09.2008 в 22:28)
 

теперь я совсем запутался(

  Ответить  
 
 автор: AcidTrash   (12.09.2008 в 23:01)   письмо автору
 
   для: icqheart   (12.09.2008 в 21:42)
 

А собственно, в чем запутались?
Вв выведите эту страницу в исходник своим кодом и посмотрите, что там.

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

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