Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > регулярка...


Автор: alligator 8.10.2006, 01:17
Кусок страницы
От сюда нуна получить цифру 9 она в <li value=9> а цифра эта может стоять у любого другого сайта
тут на примере показан 
http://www.somesite.com/
в общем нужно найти эту цифру для определенного сайта.....

Код

    <li value=9>
    <div class="title">
    
    <a href="http://www.somesite.com/" onclick="r(this, 'iweb/path=80.22.81/vars=84=93');" target="_blank"><img src="http://favicon.yandex.net/favicon/www.somesite.com" width="16" height="16" alt="" border="0" onerror="this.src='http://img.yandex.net/i/blank.gif';" /></a>
  <a tabindex="10" onclick="r(this, 'iweb/path=80.22.82/vars=84=93');" href="http://www.somesite.com/" target="_blank"> <b>Cтолы</b>, <b>стулья</b> - мебельная фабрика</a>
  </div>
  <div class="text">
    <span>| Новости | <b>Столы</b> и <b>стулья</b> | Дилерам | Мебельный магазин | Контакты </span><br />
  
    <span>  кухонные и обеденные <b>столы</b> : <b>стулья</b> : <b>столы</b> трансформеры : <b>столы</b> книжки : журнальные <b>столы</b> : компьютерные <b>столы</b> : стеклянные <b>столы</b></span><br />
  
  </div>

    <div class="info"><span style="color:#060;">
    
    www.somesite.com
    (10&nbsp;КБ)
     &nbsp;&middot;&nbsp;06.09.2006
    </span>

    </div>
  <div class="info">
    <nobr><a href="http://hghltd.yandex.com/yandbtm?url=http%3A%2F%2Fwww.somesite.com%2F&text=%F1%F2%EE%EB%FB%20%F1%F2%F3%EB%FC%FF&reqtext=(%F1%F2%EE%EB%FB%3A%3A4185%20%26%20%F1%F2%F3%EB%FC%FF%3A%3A18085)%2F%2F6&dsn=383&d=5549079&sh=1&sg=10" target="_blank">Найденные слова</a></nobr>
   &nbsp;&middot;&nbsp; <nobr><a href="/yandsearch?text=%F1%F2%EE%EB%FB%20%F1%F2%F3%EB%FC%FF&pag=u&surl=somesite.com">Еще с сайта&nbsp;(2265)</a></nobr>
  &nbsp;&middot;&nbsp; <nobr>Рубрика: <a onclick="r(this, 'iweb/path=80.83/vars=84=93');" href="http://yaca.yandex.ru/yca/cat/Private_Life/Shopping/Furniture/">Мебель и интерьер</a></nobr>
  </div>
  </li>


я делал так.... не получаеться сделать.... 
подскажите где ошибка...
Код

preg_match("/value=?(\d{1,3}).*href=http:\/\/www.somesite.com?/is",$pos,$res);


Автор: BobiKK 8.10.2006, 01:41
Эхм... Не понял, что надо выдрать? Нельзя ли просто '/<li value=(\d+)>/i' ?

Автор: Wolf1994 8.10.2006, 01:49
Код

<?php

$pos="
    <li value=9>
    <div class=\"title\">

    <a href=\"http://www.somesite.com/\" onclick=\"r(this, 'iweb/path=80.22.81/vars=84=93');\" target=\"_blank\"><img src=\"http://favicon.yandex.net/favicon/www.somesite.com\" width=\"16\" height=\"16\" alt=\"\" border=\"0\" onerror=\"this.src='http://img.yandex.net/i/blank.gif';\" /></a>
  <a tabindex=\"10\" onclick=\"r(this, 'iweb/path=80.22.82/vars=84=93');\" href=\"http://www.somesite.com/\" target=\"_blank\"> <b>Cтолы</b>, <b>стулья</b> - мебельная фабрика</a>
  </div>
  <div class=\"text\">
    <span>| Новости | <b>Столы</b> и <b>стулья</b> | Дилерам | Мебельный магазин | Контакты </span><br />

    <span>  кухонные и обеденные <b>столы</b> : <b>стулья</b> : <b>столы</b> трансформеры : <b>столы</b> книжки : журнальные <b>столы</b> : компьютерные <b>столы</b> : стеклянные <b>столы</b></span><br />

  </div>
    <div class=\"info\"><span style=\"color:#060;\">

    www.somesite.com
    (10&nbsp;КБ)
     &nbsp;&middot;&nbsp;06.09.2006
    </span>
    </div>
  <div class=\"info\">
    <nobr><a href=\"http://hghltd.yandex.com/yandbtm?url=http%3A%2F%2Fwww.somesite.com%2F&text=%F1%F2%EE%EB%FB%20%F1%F2%F3%EB%FC%FF&reqtext=(%F1%F2%EE%EB%FB%3A%3A4185%20%26%20%F1%F2%F3%EB%FC%FF%3A%3A18085)%2F%2F6&dsn=383&d=5549079&sh=1&sg=10\" target=\"_blank\">Найденные слова</a></nobr>
   &nbsp;&middot;&nbsp; <nobr><a href=\"/yandsearch?text=%F1%F2%EE%EB%FB%20%F1%F2%F3%EB%FC%FF&pag=u&surl=somesite.com\">Еще с сайта&nbsp;(2265)</a></nobr>
  &nbsp;&middot;&nbsp; <nobr>Рубрика: <a onclick=\"r(this, 'iweb/path=80.83/vars=84=93');\" href=\"http://yaca.yandex.ru/yca/cat/Private_Life/Shopping/Furniture/\">Мебель и интерьер</a></nobr>
  </div>
  </li>
";

preg_match( "/value=(\d){1,3}.*href=[^>]+somesite.com/is", $pos, $res );
print ($res [1]);

?>

Автор: alligator 8.10.2006, 12:08
сайт выберает но значение <li value=> получает неправильно , берет первое значение 
а нужно для определенного сайта =((

Автор: Wolf1994 10.10.2006, 08:27
Код

preg_match( "/value=([\d]+)(?=[^href]*href=[^>]*somesite.com)/is", $pos, $res );

Автор: alligator 10.10.2006, 20:05
я уже сделал свой вариант , но этот мне нравиться больше....
только когда разбирался с регулярами
никак не могу понять как работает  вот эта часть...
(?=[^href]*href=[^>]*somesite.com)

Автор: Wolf1994 11.10.2006, 04:38
Цитата

никак не могу понять как работает  вот эта часть...
(?=[^href]*href=[^>]*somesite.com)

(?=чему-то) - "послешествующее" утверждение. То есть, захват происходит только в случае если за выражением следует "чему-то". Причём "чему-то" в захват не включается.

[^href]* - отрицает присутствие других ссылок в условии, это сделано для того, чтобы получить "value=..." для ближайшей ссылки. Более грамотно было бы использовать два условия, наверное: (?=(?!...)...) - но я пока в этом не силён smile

Здесь полный FAQ: http://ru.php.net/manual/ru/reference.pcre.pattern.syntax.php

Автор: alligator 11.10.2006, 14:28
хмм я щас потестирую и отпишусь.....

Автор: alligator 11.10.2006, 18:20
Код

<?php

$pos="
<li value=4 >
    <div class=\"title\">
  

  

  
  <a tabindex=\"5\" onclick=\"r(this, \'iweb/path=80.22.82\');\" href=\"http://www.somesite.ru/\" target=\"_blank\">МЕДИАКОМ - энергитический напиток "кольчуга", лучший энерготоник</a>
  </div>
    <li value=1>
    <div class=\"title\">
    
    <a href=\"http://www.site.com/\" onclick=\"r(this, \'iweb/path=80.22.81/vars=84=85\');\" target=\"_blank\"><img src=\"http://favicon.yandex.net/favicon/www.kolchuga.media-kom.ru\" width=\"16\" height=\"16\" alt=\"\" border=\"0\" onerror=\"this.src=\'http://img.yandex.net/i/blank.gif\';\" /></a>
  

  

  
  <a tabindex=\"2\" onclick=\"r(this, \'iweb/path=80.22.82/vars=84=85\');\" href=\"http://www.site.com/\" target=\"_blank\">МЕДИАКОМ - энергитический напиток "кольчуга", лучший энерготоник</a>
  </div>

   <li value=2>
    <div class=\"title\">
    
    <a href=\"http://www.sitesome.ru/\" onclick=\"r(this, \'iweb/path=80.22.81/vars=84=86\');\" target=\"_blank\"><img src=\"http://favicon.yandex.net/favicon/www.kolchuga.media-kom.ru\" width=\"16\" height=\"16\" alt=\"\" border=\"0\" onerror=\"this.src=\'http://img.yandex.net/i/blank.gif\';\" /></a>
  

  

  
  <a tabindex=\"3\" onclick=\"r(this, \'iweb/path=80.22.82/vars=84=86\');\" href=\"http://www.sitesome.ru/\" target=\"_blank\">МЕДИАКОМ - энергитический напиток "<b>кольчуга</b>", лучший энерготоник</a>
  </div>

  ";

preg_match( "/value=\"?([\d\s]+)\"?[^href]*href=[^>]*www.sitesome.ru/is", $pos, $res );
print_r($res);
?>

чета я уже замучался....
preg_match( "/value=\"?([\d\s]+)\"?.*[^href]*href=[^>]*www.sitesome.ru/is", $pos, $res );
такой вариант захватывает все ссылки  и получает неверно вариант...
ссылку надо искать в таком теге...
<a tabindex=\"3\" onclick=\"r(this, \'iweb/path=80.22.82/vars=84=86\');\" href=\"http://www.sitesome.ru/\" target=\"_blank\">х</a>

Автор: alligator 12.10.2006, 01:45
решил вопрос простым способом , если уж не получаеться выбрать , то надо удалить лишнее =)
preg_replace форева )

Автор: SelenIT 21.10.2006, 01:06
Цитата(alligator @  10.10.2006,  20:05 Найти цитируемый пост)
никак не могу понять как работает  вот эта часть...
(?=[^href]*href=[^>]*somesite.com)


На самом деле "[^href]*" означает всего-навсего любое число (включая 0) любых символов, кроме букв h, r, e и f. Так что эта часть работает явно некорректно...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)