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

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

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

 

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

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

тема: Выдернуть текст
 
 автор: gOFREe   (11.06.2014 в 16:42)   письмо автору
 
 

Здравствуйте

<tr>
<td width="200"><a href="http://www.site.ru/???/????/????" title="????? - открыть">7HG2</a> </td>
<td>Длина: 3.2 км;
</td>
<td><a href="http://www.site.ru/???/????/????" title="?????"><img src=""></a></td>
</tr>


Как выдернуть выделенные элементы? т.е. 7HG2 и 3.2

Для первого я так понимаю "/(?<=\>)([^<>]+?)(?=<\/a>)/is" - так выдергиваются все элементы из ссылок, как выдернуть только те, у которых есть открыть">
Для второго "#([\d]+\.[\d]+)#i"

Как можно все это совместить?

  Ответить  
 
 автор: Igorek   (11.06.2014 в 17:21)   письмо автору
 
   для: gOFREe   (11.06.2014 в 16:42)
 

<?
$s 
'<tr>
<td width="200"><a href="http://www.site.ru/???/????/????" title="????? - открыть">7HG2</a> </td>
<td>Длина: 3.2 км;
</td>
<td><a href="http://www.site.ru/???/????/????" title="?????"><img src=""></a></td>
</tr> '
;
$p "#title=\"[^\"]*открыть\".*?>([^<]+)<\/a>.*?<\/td>.*?<td>([^<]+)#si";
preg_match($p$s$m);
var_dump($m);

  Ответить  
 
 автор: gOFREe   (11.06.2014 в 17:57)   письмо автору
 
   для: Igorek   (11.06.2014 в 17:21)
 

А если не будет <tr><td> ? И учитывая что нужно выдернуть только 3.2


<?php
$s 
'<a href="http://www.site.ru/???/????/????" title="????? - открыть">7HG2</a> Длина: 3.2 км; 
<a href="http://www.site.ru/???/????/????" title="?????"><img src=""></a> '

$p "#title=\"[^\"]*открыть\".*?>([^<]+)<\/a>.*?Длина:([\d]+\.[\d]+)#si"
preg_match($p$s$m); 
var_dump($m);
?>

Так не работает ...

  Ответить  
 
 автор: gOFREe   (11.06.2014 в 19:52)   письмо автору
 
   для: gOFREe   (11.06.2014 в 17:57)
 

Вроде так работает, поправьте если что не так

$p = "#title=\"[^\"]*открыть\".*?>([^<]+)<\/a>.*?[^\"]*Длина:\s([\d]+\.[\d]+)#si"; 


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

<?php
 
require ('phpQuery-onefile.php');

 
$engines file_get_contents('http://www.site.ru/');
 
 
$document phpQuery::newDocument($engines);
 
 
$box $document->find('table.categ_table tr td');
 
 
 
$str "";
 foreach (
$box as $el) {
     
$pq pq($el);
     
$str .= $pq->html();
}
?>

  Ответить  
 
 автор: Igorek   (12.06.2014 в 11:20)   письмо автору
 
   для: gOFREe   (11.06.2014 в 19:52)
 

<?
$p 
"#title=\"[^\"]*открыть\".*?>([^<]+)<\/a>\s*Длина:\s*(\d+\.\d+)#si"

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

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