11:35 10.07.2017
Набросал класс horoscope, выводит предсказание на вчерашний день, на сегодняшний, на завтра, на неделю, на месяц и на год в целом. Конечно недочеты имеются в классе (писал на скорую руку), но думаю, если что, можно поправить, как угодно. Сам код класса (возможно длинноват):
Работать с классом можно так: Создаем объект:
Теперь если надо вывести предсказания по дню и месяцу рождения, делаем так:
А если по названию знака, то так:
Полученная переменная
Сценарий выдаст на экран сразу все предсказания. А если надо только одно, например, на сегодня, то можно так:
class horoscope
{
public function definition($d, $m)
{
$date = $m . '-' . $d;
if ($date >= '01-21' && $date <= '02-18')
{
$sign = 'aquarius'; # Водолей
}
else if ($date >= '02-19' && $date <= '03-19')
{
$sign = 'pisces'; # Рыбы
}
else if ($date >= '03-20' && $date <= '04-19')
{
$sign = 'aries'; # Овен
}
else if ($date >= '04-20' && $date <= '05-20')
{
$sign = 'taurus'; # Телец
}
else if ($date >= '05-21' && $date <= '06-20')
{
$sign = 'gemini'; # Близнецы
}
else if ($date >= '06-21' && $date <= '07-22')
{
$sign = 'cancer'; # Рак
}
else if ($date >= '07-23' && $date <= '08-22')
{
$sign = 'leo'; # Лев
}
else if ($date >= '08-23' && $date <= '09-22')
{
$sign = 'virgo'; # Дева
}
else if ($date >= '09-23' && $date <= '10-22')
{
$sign = 'libra'; # Весы
}
else if ($date >= '10-23' && $date <= '11-21')
{
$sign = 'scorpio'; # Скорпион
}
else if ($date >= '11-22' && $date <= '12-21')
{
$sign = 'sagittarius'; # Стрелец
}
else
{
$sign = 'capricorn'; # Козерог
}
return $this->parse($sign);
}
public function parse($sign)
{
$urls = $this->urls($sign);
$html = array();
foreach ($urls as $url)
{
$html[] = file_get_contents($url);
}
return $this->treatment($html);
}
private function treatment($htmls)
{
$prediction = array();
foreach ($htmls as $html)
{
preg_match('|<div class="article__item article__item_alignment_left article__item_html">(.*?)</div>|s', $html, $clarification);
$prediction[] = $clarification[1];
}
return $prediction;
}
private function urls($sign)
{
return array(
'https://horo.mail.ru/prediction/' . $sign . '/yesterday/', # Вчера
'https://horo.mail.ru/prediction/' . $sign . '/today/', # Сегодня
'https://horo.mail.ru/prediction/' . $sign . '/tomorrow/', # Завтра
'https://horo.mail.ru/prediction/' . $sign . '/week/', # Неделя
'https://horo.mail.ru/prediction/' . $sign . '/month/', # Месяц
'https://horo.mail.ru/prediction/' . $sign . '/year/' # Год
);
}
}
Работать с классом можно так: Создаем объект:
$horoscope = new horoscope();
Теперь если надо вывести предсказания по дню и месяцу рождения, делаем так:
$predictions = $horoscope->definition('11', '11');
А если по названию знака, то так:
$predictions = $horoscope->parse('scorpio');
Полученная переменная
$predictions
- это массив с предсказаниями для разных времен (вчера | сегодня | неделя и так далее), выводим, например, в цикле:
foreach ($predictions as $prediction)
{
echo $prediction;
echo '<br />*** *** *** *** ***<br />';
}
Сценарий выдаст на экран сразу все предсказания. А если надо только одно, например, на сегодня, то можно так:
echo $predictions[1];
- Жалоба