- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
function search($source,$text)
{
$result = false;
$searchfilms = "#<a class=\"all\" href=\"/level/1/film/(.*?)a>#si";
$searchfilms2 = "#<font color=\"\#999999\">(.*?)</font>#si";
while (preg_match_all ($searchfilms, $source, $matches))
{
preg_match_all($searchfilms2, $source, $matches2);
foreach ($matches as $key => $temparray)
foreach ($temparray as $key2 => $tempresult){
$result[$key2] = $tempresult;
$result[$key2] = preg_replace("#(.*?)/sr/1/\">(.*?)</#is", "<a href=\"?id=\\1\">\\2</a>", $result[$key2])." ".$matches2[$key][$key2];
}
return $result;
}
}
Парсер результатов с кинопоиска, отсюдова: http://bit-torrent.kiev.ua/arser_kinopoisk_ru-t3637/index.html
Может я что-то не понимаю, но зачем так извращаться совсем не ясноне ясно, 3 вложенных цикла О_о. preg_match в while зачем совсем не ясно.
Короче чтобы добавить сюда еще и год фильма, пришлось переписать... А хотелось AFAIK :)
Короче AFAIK вышло вот так:
function search($source, $text) {
$result = array();
$searchfilms = "#<a class=\"all\" href=\"/level/1/film/(.*?)/.*?>(.*?)<.*?a>.*?(\d{4}).*?#si";
$searchfilms2 = "#<font color=\"\#999999\">(.*?)</font>(.*?)#si";
preg_match_all ($searchfilms, $source, $matches);
preg_match_all($searchfilms2, $source, $matches2);
foreach ($matches[1] as $key => $temparray) {
$id = $matches[1][$key];
$name = $matches[2][$key];
$name_eng = $matches2[1][$key];
$year = $matches[3][$key];
$result[] = "<a href=\"?id=$id\">$name..$name_eng...($year)</a>";
}
return $result;
}
p.s. ИМХО читабельнее в разы