Answer the question
In order to leave comments, you need to log in
How to display 10 facts?
I bring out the facts like this
// Получаем факты
$urlfact = 'http://randstuff.ru/fact';
$pagefact = file_get_contents($urlfact);
preg_match("/<table. *class=\"text\"><tr><td>(.*)<\/td><\/tr><\/table>/", $pagefact, $textfact);
echo $message = "Интересный факт:\n\n".$textfact[1];
Answer the question
In order to leave comments, you need to log in
Option 1:
$errorCount = 0; //будем считать ошибки, чтобы не ходить все время по кругу
$textFacts = []; // массив с фактами
$urlFact = 'http://randstuff.ru/fact'; // урл на факты
// пока массив с фактами меньше 10 и количество ошибок меньше 5, то ходим снова по циклу
while (count($textFacts) < 10 && $errorCount < 5) {
$pageFact = file_get_contents($urlFact); // достаем контент с удаленной страницы
// если удалось найти искомое, записываем в массив
if (preg_match('#<div id="fact">.*?<td>(?P<fact>.*?)</td>#', $pageFact, $match)) {
$textFact = "Интересный факт:\n\n" . $match['fact'] . "\n";
array_push($textFacts, $textFact);
} else $errorCount++; // если не удалось найти нужное, то плюсуем ошибки
}
echo implode("\n", $textFacts); // склеиваем значения в массиве в строку и выводим
$errorCount = 0;
$textFacts = [];
$urlFactAjax = 'https://randstuff.ru/fact/generate/';
$options = [
CURLOPT_RETURNTRANSFER => 1, // return web page
CURLOPT_HEADER => 0, // return headers
CURLOPT_SSL_VERIFYPEER => 0, // Disabled SSL Cert checks
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_POST => 1,
CURLOPT_HTTPHEADER => ['X-Requested-With:XMLHttpRequest'],
];
while (count($textFacts) < 10 && $errorCount < 5) {
// $json_string = file_get_contents($urlFact, false, $context);
$ch = curl_init($urlFactAjax);
curl_setopt_array($ch, $options);
$fact = '';
if ($json_string = curl_exec($ch))
if ($json_content = json_decode($json_string))
$fact = trim($json_content->fact->text ?? '');
if (strlen($fact)) {
array_push($textFacts, "Интересный факт:\n\n{$fact}\n");
} else $errorCount++;
}
echo implode("\n", $textFacts);
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question