<?php
function getHtml($url) {
curl_setopt($ch, CURLOPT_USERAGENT
, 'Mozilla/5.0'); // Spoof as browser return $html;
}
function findReview($html, $urlLabel = 'Page') {
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
// Look for any element that may contain reviews
$reviewNodes = $xpath->query("//*[contains(@class, 'review') or contains(@class, 'Review') or contains(@id, 'review')]");
foreach ($reviewNodes as $node) {
$text = trim($node->textContent); if (strlen($text) > 30) { // Arbitrary length to filter out short labels echo "✅ Found review on $urlLabel:\n$text\n";
return true;
}
}
return false;
}
function getProductLinks($html, $baseUrl) {
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$links = $xpath->query("//a[contains(@href, '/products')]");
$productLinks = [];
foreach ($links as $link) {
$href = $link->getAttribute('href');
if (strpos($href, 'http') === 0) { $productLinks[] = $href;
} else {
$productLinks[] = rtrim($baseUrl, '/') . '/' . ltrim($href, '/'); }
}
}
// MAIN LOGIC
$homepageUrl = "https://w...content-available-to-author-only...m.au";
$homepageHtml = getHtml($homepageUrl);
echo "🔍 Checking homepage for reviews...\n";
$foundOnHome = findReview($homepageHtml, 'homepage');
if (!$foundOnHome) {
echo "⚠️ No review found on homepage. Checking product pages...\n";
$productLinks = getProductLinks($homepageHtml, $homepageUrl);
if (empty($productLinks)) { echo "❌ No product links found on homepage.\n";
}
foreach ($productLinks as $productUrl) {
echo "🔗 Visiting: $productUrl\n";
$productHtml = getHtml($productUrl);
$found = findReview($productHtml, $productUrl);
if ($found) {
break;
}
}
} else {
echo "🏁 Stopped after finding review on homepage.\n";
}
PD9waHAKCmZ1bmN0aW9uIGdldEh0bWwoJHVybCkgewogICAgJGNoID0gY3VybF9pbml0KCR1cmwpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICdNb3ppbGxhLzUuMCcpOyAvLyBTcG9vZiBhcyBicm93c2VyCiAgICAkaHRtbCA9IGN1cmxfZXhlYygkY2gpOwogICAgY3VybF9jbG9zZSgkY2gpOwogICAgcmV0dXJuICRodG1sOwp9CgpmdW5jdGlvbiBmaW5kUmV2aWV3KCRodG1sLCAkdXJsTGFiZWwgPSAnUGFnZScpIHsKICAgICRkb20gPSBuZXcgRE9NRG9jdW1lbnQoKTsKICAgIEAkZG9tLT5sb2FkSFRNTCgkaHRtbCk7CiAgICAkeHBhdGggPSBuZXcgRE9NWFBhdGgoJGRvbSk7CgogICAgLy8gTG9vayBmb3IgYW55IGVsZW1lbnQgdGhhdCBtYXkgY29udGFpbiByZXZpZXdzCiAgICAkcmV2aWV3Tm9kZXMgPSAkeHBhdGgtPnF1ZXJ5KCIvLypbY29udGFpbnMoQGNsYXNzLCAncmV2aWV3Jykgb3IgY29udGFpbnMoQGNsYXNzLCAnUmV2aWV3Jykgb3IgY29udGFpbnMoQGlkLCAncmV2aWV3JyldIik7CgogICAgZm9yZWFjaCAoJHJldmlld05vZGVzIGFzICRub2RlKSB7CiAgICAgICAgJHRleHQgPSB0cmltKCRub2RlLT50ZXh0Q29udGVudCk7CiAgICAgICAgaWYgKHN0cmxlbigkdGV4dCkgPiAzMCkgeyAvLyBBcmJpdHJhcnkgbGVuZ3RoIHRvIGZpbHRlciBvdXQgc2hvcnQgbGFiZWxzCiAgICAgICAgICAgIGVjaG8gIuKchSBGb3VuZCByZXZpZXcgb24gJHVybExhYmVsOlxuJHRleHRcbiI7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIGdldFByb2R1Y3RMaW5rcygkaHRtbCwgJGJhc2VVcmwpIHsKICAgICRkb20gPSBuZXcgRE9NRG9jdW1lbnQoKTsKICAgIEAkZG9tLT5sb2FkSFRNTCgkaHRtbCk7CiAgICAkeHBhdGggPSBuZXcgRE9NWFBhdGgoJGRvbSk7CiAgICAkbGlua3MgPSAkeHBhdGgtPnF1ZXJ5KCIvL2FbY29udGFpbnMoQGhyZWYsICcvcHJvZHVjdHMnKV0iKTsKCiAgICAkcHJvZHVjdExpbmtzID0gW107CiAgICBmb3JlYWNoICgkbGlua3MgYXMgJGxpbmspIHsKICAgICAgICAkaHJlZiA9ICRsaW5rLT5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTsKICAgICAgICBpZiAoc3RycG9zKCRocmVmLCAnaHR0cCcpID09PSAwKSB7CiAgICAgICAgICAgICRwcm9kdWN0TGlua3NbXSA9ICRocmVmOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRwcm9kdWN0TGlua3NbXSA9IHJ0cmltKCRiYXNlVXJsLCAnLycpIC4gJy8nIC4gbHRyaW0oJGhyZWYsICcvJyk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBhcnJheV91bmlxdWUoJHByb2R1Y3RMaW5rcyk7Cn0KCi8vIE1BSU4gTE9HSUMKJGhvbWVwYWdlVXJsID0gImh0dHBzOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubS5hdSI7CiRob21lcGFnZUh0bWwgPSBnZXRIdG1sKCRob21lcGFnZVVybCk7CgplY2hvICLwn5SNIENoZWNraW5nIGhvbWVwYWdlIGZvciByZXZpZXdzLi4uXG4iOwokZm91bmRPbkhvbWUgPSBmaW5kUmV2aWV3KCRob21lcGFnZUh0bWwsICdob21lcGFnZScpOwoKaWYgKCEkZm91bmRPbkhvbWUpIHsKICAgIGVjaG8gIuKaoO+4jyAgTm8gcmV2aWV3IGZvdW5kIG9uIGhvbWVwYWdlLiBDaGVja2luZyBwcm9kdWN0IHBhZ2VzLi4uXG4iOwogICAgJHByb2R1Y3RMaW5rcyA9IGdldFByb2R1Y3RMaW5rcygkaG9tZXBhZ2VIdG1sLCAkaG9tZXBhZ2VVcmwpOwoKICAgIGlmIChlbXB0eSgkcHJvZHVjdExpbmtzKSkgewogICAgICAgIGVjaG8gIuKdjCBObyBwcm9kdWN0IGxpbmtzIGZvdW5kIG9uIGhvbWVwYWdlLlxuIjsKICAgICAgICBleGl0OwogICAgfQoKICAgIGZvcmVhY2ggKCRwcm9kdWN0TGlua3MgYXMgJHByb2R1Y3RVcmwpIHsKICAgICAgICBlY2hvICLwn5SXIFZpc2l0aW5nOiAkcHJvZHVjdFVybFxuIjsKICAgICAgICAkcHJvZHVjdEh0bWwgPSBnZXRIdG1sKCRwcm9kdWN0VXJsKTsKICAgICAgICAkZm91bmQgPSBmaW5kUmV2aWV3KCRwcm9kdWN0SHRtbCwgJHByb2R1Y3RVcmwpOwogICAgICAgIGlmICgkZm91bmQpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQp9IGVsc2UgewogICAgZWNobyAi8J+PgSBTdG9wcGVkIGFmdGVyIGZpbmRpbmcgcmV2aWV3IG9uIGhvbWVwYWdlLlxuIjsKfQo=