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

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

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

 

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

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

тема: извлечь текст из html кода и записать его в переменную.
 
 автор: BaSh   (13.06.2007 в 09:28)   письмо автору
 
 

Здравствуйте!
Такая проблема:
нужно выдрать из html кода текст, который постоянно меняется и записать его в переменную...
Нужный текст находится между тегами <option value=".....">Текст</option>

Такой вариант не работает:
$pattern = "#>weather_show.php(.*)</option>#s";
preg_match($pattern, $text, $out);

Помогите составить правильное регулярное выражение для этого.

   
 
 автор: Trianon   (13.06.2007 в 10:18)   письмо автору
 
   для: BaSh   (13.06.2007 в 09:28)
 

показывайте живой фрагмент потока данных...

   
 
 автор: BaSh   (13.06.2007 в 12:07)   письмо автору
 
   для: Trianon   (13.06.2007 в 10:18)
 

Я взял граббер, который выложил mr Bin в теме ниже...
Немного модифицировал, теперь он может показывать погоду на все города...


<?php   
error_reporting
(0);
//header('Location: http://site.ru/weth/weather_show.php??city_id=1793284');
$url "http://www.liveinternet.ru/weather_show.php?$QUERY_STRING"$content file_get_contents($url); 
// Переходы в тексте НЕ РЕДАКТИРОВАТЬ. Иначе не будет работать скрипт!   
$pattern "|<img align=\"middle\" alt=\"\" src=\"http://www.liveinternet.ru/4Ek/i/broadcast/arr.gif\" /> <b class=\"GREEN\">([^<]+)</b> ([^<]+)<br/>\r\n<img align=\"bottom\" alt=\"\" src=\"/images/weather_icons/([^<]+)\" />&nbsp;<b>([^<]+)</b>([^<]+)<b>([^<]+)</b>([^<]+)<br/>\r\n<img align=\"bottom\" alt=\"\" src=\"/images/weather_icons/([^<]+)\" />&nbsp;<b>([^<]+)</b>([^<]+)<b>([^<]+)</b>([^<]+)<br/>[\s]*|is";  
preg_match_all($pattern$content$out);  
echo 
'<title>Граббер погоды с ЛивИнтернет v2.0</title>   
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">   
<style type="text/css"> body,td,th {font-family: Tahoma, Arial; font-size: 13px; color: #515151; } </style>   
<table border="0" cellspacing="1" cellpadding="1" bgcolor="#CCCCCC"><tr bgcolor="#FFFFFF"><td>
<table width="100%" border="0"><tr align="center" bgcolor="#FFFFFF"><td><b>'
.$country[1].'</b></td></tr></table>'
// Здесь можно указать, на сколько дней выводить погоду.
// $i <= 3; - меняя цифру, выставляем дни. Сейчас погода на три дня. Число можнт быть от 1ого до 3ёх, иначе всё полетит.
for ($i=1$i <= 3$i++) { print '<table width="140"><tr bgcolor="#FFFFFF"><td colspan="2" align="center" bgcolor="#E6F3F9">'.$out[1][$i].'</td></tr><tr><td align="center"><img src="http://www.liveinternet.ru/images/weather_icons/'.$out[3][$i].'">&nbsp;&nbsp;День: '.$out[6][$i].'</td></tr><tr><td align="center"><img src="http://www.liveinternet.ru/images/weather_icons/'.$out[8][$i].'">&nbsp;&nbsp;Ночь: '.$out[11][$i].'</td> 
</tr></table>'
; }  
echo 
'</td></tr></table>';
$c='<form action="http://www.liveinternet.ru/weather_show.php" method="get">
<img align="middle" alt="" src="http://www.liveinternet.ru/4Ek/i/broadcast/catarr.gif" /> <b class="GREEN">Выберите город:</b>&nbsp;<select name="city_id" onChange="if(options[selectedIndex].value) window.location.href= (options[selectedIndex].value)">
<option value=weather_show.php?city_id=1793328>Абакан, Россия</option>
<option value=weather_show.php?city_id=1793415>Адлер, Россия</option>
<option value=weather_show.php?city_id=1793334>Алма-Ата, Казахстан</option>
<option value=weather_show.php?city_id=1793401>Амстердам, Нидерланды</option>
<option value=weather_show.php?city_id=1793373>Ангарск, Россия</option>
<option value=weather_show.php?city_id=1793378>Артем, Россия</option>
<option value=weather_show.php?city_id=1793264>Архангельск, Россия</option>
<option value=weather_show.php?city_id=1793330>Астана, Казахстан</option>
<option value=weather_show.php?city_id=1793271>Астрахань, Россия</option>
<option value=weather_show.php?city_id=1793285>Афины, Греция</option>
<option value=weather_show.php?city_id=1793304>Ашхабад, Туркмения</option>
<option value=weather_show.php?city_id=1793302>Баку, Азербайджан</option>
<option value=weather_show.php?city_id=1793309>Барнаул, Россия</option>
<option value=weather_show.php?city_id=1793296>Барселона, Испания</option>'
;
// и т.д. все города писать не буду.
echo $c;
?>



Уже решил проблему по другому....там всё было проще...
Но всё же хочу знать как извлечь названия городов из такого вот кода
<option value=weather_show.php?city_id=1793309>Барнаул, Россия</option>
записать в переменную и вывести только текст "Барнаул, Россия".
или приведите хотя бы пример как это делается, дальше разберусь...

   
 
 автор: Trianon   (13.06.2007 в 14:08)   письмо автору
 
   для: BaSh   (13.06.2007 в 12:07)
 


<?php 
$c
='<form action="http://www.liveinternet.ru/weather_show.php" method="get">
<img align="middle" alt="" src="http://www.liveinternet.ru/4Ek/i/broadcast/catarr.gif" /> <b class="GREEN">Выберите город:</b>&nbsp;<select name="city_id" onChange="if(options[selectedIndex].value) window.location.href= (options[selectedIndex].value)">
<option value=weather_show.php?city_id=1793328>Абакан, Россия</option>
<option value=weather_show.php?city_id=1793415>Адлер, Россия</option>
<option value=weather_show.php?city_id=1793334>Алма-Ата, Казахстан</option>
<option value=weather_show.php?city_id=1793401>Амстердам, Нидерланды</option>
<option value=weather_show.php?city_id=1793373>Ангарск, Россия</option>
<option value=weather_show.php?city_id=1793378>Артем, Россия</option>
<option value=weather_show.php?city_id=1793264>Архангельск, Россия</option>
<option value=weather_show.php?city_id=1793330>Астана, Казахстан</option>
<option value=weather_show.php?city_id=1793271>Астрахань, Россия</option>
<option value=weather_show.php?city_id=1793285>Афины, Греция</option>
<option value=weather_show.php?city_id=1793304>Ашхабад, Туркмения</option>
<option value=weather_show.php?city_id=1793302>Баку, Азербайджан</option>
<option value=weather_show.php?city_id=1793309>Барнаул, Россия</option>
<option value=weather_show.php?city_id=1793296>Барселона, Испания</option>'
;

$mask 'value=weather_show.php?city_id=';
$qmask preg_quote($mask'|');
//echo $qmask;
echo preg_match_all("|<option[\s]$qmask([^>]+)>([^<]+)</option>|"$c$outPREG_SET_ORDER);
$city = array();
foreach (
$out as $val)
  
$city[$val[1]] = $val[2];
echo 
'<pre>';
print_r($city);

?>

   
 
 автор: BaSh   (13.06.2007 в 14:14)   письмо автору
 
   для: Trianon   (13.06.2007 в 14:08)
 

Большое спасибо!

   
Rambler's Top100
вверх

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