|
|
|
| Здравствуйте!
Такая проблема:
нужно выдрать из html кода текст, который постоянно меняется и записать его в переменную...
Нужный текст находится между тегами <option value=".....">Текст</option>
Такой вариант не работает:
$pattern = "#>weather_show.php(.*)</option>#s";
preg_match($pattern, $text, $out);
Помогите составить правильное регулярное выражение для этого. | |
|
|
|
|
|
|
|
для: BaSh
(13.06.2007 в 09:28)
| | показывайте живой фрагмент потока данных... | |
|
|
|
|
|
|
|
для: 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/([^<]+)\" /> <b>([^<]+)</b>([^<]+)<b>([^<]+)</b>([^<]+)<br/>\r\n<img align=\"bottom\" alt=\"\" src=\"/images/weather_icons/([^<]+)\" /> <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].'"> День: '.$out[6][$i].'</td></tr><tr><td align="center"><img src="http://www.liveinternet.ru/images/weather_icons/'.$out[8][$i].'"> Ночь: '.$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> <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>
записать в переменную и вывести только текст "Барнаул, Россия".
или приведите хотя бы пример как это делается, дальше разберусь... | |
|
|
|
|
|
|
|
для: 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> <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, $out, PREG_SET_ORDER);
$city = array();
foreach ($out as $val)
$city[$val[1]] = $val[2];
echo '<pre>';
print_r($city);
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(13.06.2007 в 14:08)
| | Большое спасибо! | |
|
|
|