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

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

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

 

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

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

тема: выдернуть значение из HTML-кода
 
 автор: mirage   (11.10.2006 в 10:50)   письмо автору
 
 

Есть html файл в котором есть таблица структура колонок такая

<td onmouseout="this.style.backgroundColor=''" onmouseover="this.style.backgroundColor='#00A2FF'" bgcolor=#efefef><b><nobr>&nbsp;&nbsp;<a href="user.php?session=&do=view&id=28309&p=311&sq=4&searchvalue=&field_0=&field_1=&inofirm=&field_10=&checkmatch=&dbot=&dbdo=&dmot=&dmdo=" onmouseover="popup2('<b><font face=arial size=2 color=#000000><center>Полное описание','')" onmouseout="removeBox()"><font style="text-decoration: none; font-color: black">5-3182132 К1&nbsp;&nbsp;</td>
Помогите пожалуйста как мне из этого выражения выдернуть значение 5-3182132 К1

   
 
 автор: Mirage   (11.10.2006 в 12:50)   письмо автору
 
   для: mirage   (11.10.2006 в 10:50)
 

<?php
  
// Получаем текущие курсы валют в rss-формате с сайта www.cbr.ru
  
$content get_content();
  
// Разбираем содержимое, при помощи регулярных выражений

  
preg_match_all("|<font style=\"text-decoration: none; font-color: black\">(.+?)&nbsp;&nbsp;<\/td>|"$content$out);

unset(
$out[0]);
  echo 
"<pre>";
  
print_r($out[1]);
  echo 
"</pre>";


  function 
get_content()
  {
    
// Формируем ссылку
    
$link "xxxx";
    
// Загружаем HTML-страницу
    
$fd fopen($link"r");
    
$text="";
    if (!
$fd) echo "Запрашиваемая страница не найдена";
    else
    {
      
// Чтение содержимого файла в переменную $text
      
while (!feof ($fd)) $text .= fgets($fd4096);
    }
    
// Закрыть открытый файловый дескриптор
    
fclose ($fd);
    return 
$text;
  }
?>

   
 
 автор: cheops   (11.10.2006 в 12:55)   письмо автору
 
   для: mirage   (11.10.2006 в 10:50)
 

Можно поступить следующим образом
<?php 
  $text 
file_get_contents("имя_файла.html");; 
  
$pattern "|<font[^>]+black\">(.*?)&nbsp;&nbsp;</td>|is";
  
preg_match($pattern$text$out);
  echo 
$out[1];
?>

   
 
 автор: victoor   (11.10.2006 в 13:29)   письмо автору
 
   для: cheops   (11.10.2006 в 12:55)
 

а как поступить, если этих вхождений может быть несколько и все надо сохранить в массив?

   
 
 автор: cheops   (11.10.2006 в 13:41)   письмо автору
 
   для: victoor   (11.10.2006 в 13:29)
 

В этом случае вместо функции preg_match() используют preg_match_all()
<?php  
  $text 
file_get_contents("имя_файла.html");;  
  
$pattern "|<font[^>]+black\">(.*?)&nbsp;&nbsp;</td>|is"
  
preg_match_all($pattern$text$out); 
  echo 
"<pre>";
  echo 
$out[1]; 
  echo 
"</pre>";
?>

   
 
 автор: Mirage   (11.10.2006 в 17:38)   письмо автору
 
   для: cheops   (11.10.2006 в 13:41)
 

спасибо все работает
но только вот один вопрос как исключить дубликаты (т.е что бы с помошью функции preg_match_all в массив не записывались одинаковые данные)

   
 
 автор: Mirage   (11.10.2006 в 19:25)   письмо автору
 
   для: Mirage   (11.10.2006 в 17:38)
 

и еще один вопрос как можно добавить пустую запись в массив если между тегами ничего нет
пример <td></td>

   
 
 автор: cheops   (11.10.2006 в 22:18)   письмо автору
 
   для: Mirage   (11.10.2006 в 17:38)
 

Лучше в массив записать дубликаты, а потом почистить его содержимое при помощи функции array_unique().

   
 
 автор: victoor   (11.10.2006 в 18:33)   письмо автору
 
   для: cheops   (11.10.2006 в 13:41)
 

Спасибо, работает

   
 
 автор: Mirage   (12.10.2006 в 10:56)   письмо автору
 
   для: victoor   (11.10.2006 в 18:33)
 

ЕШЕ РАЗ БЛАГАДАРЕН ТЕБЕ CHEOPS

   
 
 автор: Mirage   (12.10.2006 в 16:18)   письмо автору
 
   для: Mirage   (12.10.2006 в 10:56)
 

черт возми проблема за проблемой
регулярные выражения изучаю всего второй день :)
есть файл

</tr></td></table>

Предельная частота вращения подшипников, приведенная в каталоге соответствует классу точности 0. Класс точности 5 позволяет повысить скорость шариковых радиальных и радиально-упорных подшипников, а также радиальных роликоподшипников с короткими цилиндрическими роликами в 1,5 раза, класс 4 - в 2 раза. Для радиально-упорных подшипников с коническими роликами, а также упорных шарикоподшипников с коническими роликами, а также упорных шарикоподшипников класс точности 5 позволяет повысить скорость в 1,1 раза, а класс точности 4 - в 1,2 раза.
<center>

значит последовательность такая сначало обязательно идет
строка со значением </tr></td></table>
потом пустая строка
потом то что мне нужно выташить (выделенно жырным)
затем строка <center>
помогите написать регулярное выражение

   
 
 автор: cheops   (12.10.2006 в 16:29)   письмо автору
 
   для: Mirage   (12.10.2006 в 16:18)
 

Можно поступить следующим образом
<?php   
  $text 
file_get_contents("имя_файла.html");;   
  
$pattern "|</tr></td></table>[\s]+(.*?)<center>|is";  
  
preg_match_all($pattern$text$out);  
  echo 
"<pre>"
  echo 
$out[1];  
  echo 
"</pre>"
?>

PS Под новые вопросы, лучше заводить новые темы.

   
 
 автор: Trianon   (12.10.2006 в 16:44)   письмо автору
 
   для: Mirage   (12.10.2006 в 16:18)
 


<?php
{
     
$from preg_quote('</tr></td></table>

     '
,'#'); $to preg_quote('
     <center>'
,'#');
     
$text='--
</tr></td></table>

регулярные выражения изучаю всего второй день :)
есть файл

<center>
----
</tr></td></table>

ЕШЕ РАЗ БЛАГАДАРЕН ТЕБЕ CHEOPS

<center>
----
</tr></td></table>

и еще один вопрос как можно добавить пустую запись в массив если между тегами ничего нет

<center>
--'
;

    
preg_match_all("#$from([\s\S]*)$to#U"$text$resPREG_SET_ORDER);
    foreach(
$res as $n => $v$res[$n] = $res[$n][1];

    echo 
'<pre>';    print_r($res);

}
?>

   
Rambler's Top100
вверх

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