Реклама на сайте Advertise with us

Помогите разобраться с regexp'ами

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 05.07.03
Сообщения: 357
Рейтинг: 68

Ссылка на сообщениеДобавлено: 25/12/04 в 21:50       Ответить с цитатойцитата 

Собственно проблемма:

Есть html-страница, в которой где-то в середине есть блок, заключенный между комментариями:

<!--BEGIN_NEW_LINKS-->
...
<!--END_NEW_LINKS-->

Задача: выцепить этот блок.

Почитав мануалы, стал экспериментировать с регулярными выражениями, но, поскольку вы видите этот пост, у меня нихрена не получилось ;(

последнее, на чем остановился:

preg_match("/(?<=<!--BEGIN_NEW_LINKS-->)\S*(?<=<!--END_NEW_LINKS-->)/", $buf, $matches)

Подскажите плиз, что не так?

И еще интересует момент: как правильно задавать конкретную строку для поиска? (в нашем случае <!--BEGIN_NEW_LINKS--> и END)

0
 



С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096

Ссылка на сообщениеДобавлено: 25/12/04 в 22:12       Ответить с цитатойцитата 

можно и проще:
Код:

$buf='some_text';// << здесь твой код
$sp = strpos($buf,'<!--BEGIN_NEW_LINKS-->');
if($sp===false) die('not found');
$ep = strpos($buf,'<!--END_NEW_LINKS-->');
if($ep===false) die('not found');
$ep += strlen('<!--END_NEW_LINKS-->');
$result = substr($buf,$sp,$ep-$sp);

1
 

/dev/awm

С нами с 05.02.04
Сообщения: 2300
Рейтинг: 1127

Ссылка на сообщениеДобавлено: 25/12/04 в 22:31       Ответить с цитатойцитата 

вместо скобок < и > попробуй \< и \>
это спецсимволы и их надо анекейпать.
могу ошибаться, но кажется нужно анескейпать только одну скобку.
попробуй разные варианты.

вообще, если имеются траблы с регекспами (а это немудрено в случае сложных регекспов), упрости вариант и потихонечку его усложняй, пока не дойдешь то требуемого.

JpS Live

1
 



С нами с 05.07.03
Сообщения: 357
Рейтинг: 68

Ссылка на сообщениеДобавлено: 25/12/04 в 22:47       Ответить с цитатойцитата 

ок, спасибо.. буду пробовать.

2webboxxx: спасибо, конечно. но в конечном итоге нужно все будет делать с помощью регулярных выражений, так как обрабатываемых страниц будет много, с разными идентификаторами начала и конца нужного блока, + нужно будет по шаблонам парсить сами блоки, которые выцепляются..

по ходу еще вопрос возник:
как через fscockopen открыть url/page.html ? т.е. если писать:

$fp = fsockopen('www.yahoo.com', 80, $errno, $errstr, 30);

то все нормально проходит. если же:

$fp = fsockopen('www.yahoo.com/1.html', 80, $errno, $errstr, 30);

- то уже не получается. в принципе логично, так как php по урлу вызывает get_host_by_name() и только потом открывает соединение.
сосбтвенно вопрос: есть ли методы открыть урл+документ используя fsockopen?

если нет, то еще вопрос:
можно воспользоваться альтернативным методом:

$fp = fopen("http://www.yahoo.com/1.html", "r");

но в данном случае интересует подсовывание своего HTTP-хидера.



в общем всех нещадно плюсую! icon_smile.gif

0
 

/dev/awm

С нами с 05.02.04
Сообщения: 2300
Рейтинг: 1127

Ссылка на сообщениеДобавлено: 25/12/04 в 22:53       Ответить с цитатойцитата 

естественно fsockopen передавать url - это тоже самое что складывать яблоки с валенками.
судя из названия функции - это открытие СОКЕТА, т.е. нжен адрес или имя хоста.
вот пример из моих скриптов (нужно поправить):

Код:

$split = parse_url($url);

$request  = "GET ".(isset($split["path"])?$split["path"]:"")."?".(isset($split["query"])?$split["query"]:"")." HTTP/1.0\r\n";
$request .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)\r\n";
$request .= "Host: ".$split["host"]."\r\n";
$request .= "Connection: Close\r\n\r\n";

$full_string = "";
$fp = fsockopen ($split["host"], 80);
if($fp)
{
  fputs ($fp, $request);
  while (!feof($fp))
   $full_string .= fgets ( $fp, 4000 );
  fclose ($fp);
} else
  return false;


там же можно и другие хидеры указать.

JpS Live

1
 



С нами с 05.07.03
Сообщения: 357
Рейтинг: 68

Ссылка на сообщениеДобавлено: 25/12/04 в 23:00       Ответить с цитатойцитата 

JpS, сымаю кепку! icon_smile.gif

Спасибо!!!

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »