Регулярные выражения - обработка предложений на других сайтах

Splanger

Guest
Регулярные выражения - обработка предложений на других сайтах

Приветствую всех!

Жизнь меня послала к регулярным выражениям, с которыми я почти никогда не работал. Надеюсь мне кто-нибуть сможет помочь в моей задаче.

Ближе к делу:
Требуется написать скрипт по поиску объявлений в интернете, который будет получать запрос пользователя и критерии по которым следует искать объявление (например город, страна, какого рода объявления и пр.), затем скрипт будет идти на сайты с объявлениями (которые будут заранее известны) и искать на них нужные объявления.

Главный вопрос:
Каким образом, сделать так, что-бы скрипт определял где начало и конец объявления (ведь на странице, на которой ведётся поиск может оказаться больше одного объявления, так как тогда выбрать и вырезать с сайта конкретное объявление?)
Как найти на странице конкретные слова я уже знаю, но как целые предложения искать имея в шаблоне лишь одно слово... Да ведь ещё и вырезать надо будет это предложение и вывести юзеру.

Если есть хотя бы идеи как это можно осуществить, прошу помочь!

-------------------------------------------------------------------------------

Между делом ещё такой вопрос:

PHP:
$input = file_get_contents("http://ganjawars.ru/search.php?key=$login");
Как сделать что-бы вместо "$login" стояло значение переменной "$login" ?

------------------------------------------------------------------------------

И ещё один вопрос:

Я не понял что делает и для чего нужен массив в регулярных выражениях... Я как понял туда записывается результат выполненой функции "preg_", но в каком виде оно там находится? Допустим мне надо разбить следующее предложение по словам и занести в массив:

"Вася шёл по улице и шатался на ходу"

Как это сделать?
 

dmitryk

Новичок
Каким образом, сделать так, что-бы скрипт определял где начало и конец объявления (ведь на странице, на которой ведётся поиск может оказаться больше одного объявления, так как тогда выбрать и вырезать с сайта конкретное объявление?)
Определи границы объявления. Получив контент страницы, используй strpos+substr. Пример:
PHP:
$len = strlen($data);
                $i=0;
                $j=0;
                $matches = array();
                $str_start='message_start';
                $str_end = 'message_end';

                while ($i<$len && $j<$len) {
                    $i=strpos($data,$str_start,$i);
                    $j=strpos($data,$str_end,$i);
                    if($i === false){
                        break;
                    }
                    if ($j === false){
                        $j=$len;
                    }
                    $i+=+strlen($str_start);
                    $matches[] = substr($data,$i,$j-$i);
                    $i=$j+strlen($str_end);
                }
Вырежет все, что между фразами 'message_start' и 'message_end'. Если объявлений с такими границами несколько - вырежет все.

Как сделать что-бы вместо "$login" стояло значение переменной "$login" ?
И так уже стоит
Я не понял что делает и для чего нужен массив в регулярных выражениях... Я как понял туда записывается результат выполненой функции "preg_", но в каком виде оно там находится? Допустим мне надо разбить следующее предложение по словам и занести в массив:

"Вася шёл по улице и шатался на ходу"

Как это сделать?
rtfm.
 

Splanger

Guest
Что делает "strpos"?

------------------------------

Уже всё заработало! =))

------------------------------

Читал, поэтому и спрашиваю
 

dmitryk

Новичок
Что делает "strpos"?
Returns the numeric position of the first occurrence of needle in the haystack string. Unlike the strrpos(), this function can take a full string as the needle parameter and the entire string will be used.
Читал, поэтому и спрашиваю
В 0-ю позицию массива с найденными совпадениями записываются все совпадения(для preg_match_all), найденные по паттерну, в 1-ю - совпадения по подпаттерну в первых скобках, во 2-ю - во вторых и т.д.
 

Splanger

Guest
2дмитрик:
а первое по русски можно?

------------------------------------

ок понял, но не совсем, что за 1-ые и 2-ые скобки? Скобки шаблона?
 

dmitryk

Новичок
Автор оригинала: Splanger
2дмитрик:
а первое по русски можно?
http://www.php.net/manual/ru/function.strpos.php

ок понял, но не совсем, что за 1-ые и 2-ые скобки? Скобки шаблона?
http://detail.phpclub.ru/article/regexp_1
Глава "Запомнить все"
Как при помощи функций языка выполнить операцию не над всей строкой, которая удовлетворяет условию, а только над ее частью?

Специально для таких целей существуют группирующие и одновременно сохраняющие круглые скобки.

Sergey Kolesnichenko.
я про эти скобки
 

Splanger

Guest
Автор оригинала: dmitryk
http://www.php.net/manual/ru/function.strpos.php


http://detail.phpclub.ru/article/regexp_1
Глава "Запомнить все"

я про эти скобки
А... ок, понятно. А можешь объяснить мне, чем отличается такое выражение:

"/?:(abc)/"

от такого:

"/^(abc)$/"

?

Я не пойму зачем используется "?:" и имеет ли смысл ставить "^" и "$" если для этого есть "/" ?
 

dmitryk

Новичок
Смотрим там же
http://detail.phpclub.ru/article/regexp_1
Читаем ВНИМАТЕЛЬНО
 
Сверху