bunun gibi başka sayfadan çek. bu çalışan bir örnek kendi sitemde kullanıyorum.
<?php
// altin.php dosyası
function getAltinFiyatlari() {
$url = "https://ceyrekaltinfiyatlari.com/yalova";
// Debug için
echo "<!-- Debug: URL: $url -->\n";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');
$html = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "<!-- Debug: HTTP Code: $http_code -->\n";
echo "<!-- Debug: HTML Length: " . strlen($html) . " -->\n";
if (!$html || $http_code != 200) {
return null;
}
// HTML'nin ilk 500 karakterini debug için göster
echo "<!-- Debug: First 500 chars: " . htmlspecialchars(substr($html, 0, 500)) . " -->\n";
return $html;
}
function parseAltinFiyatlari($html) {
$fiyatlar = [
'gram' => ['bozdurma' => 'Veri bulunamadı', 'satin_alma' => 'Veri bulunamadı'],
'ceyrek' => ['bozdurma' => 'Veri bulunamadı', 'satin_alma' => 'Veri bulunamadı'],
'yarim' => ['bozdurma' => 'Veri bulunamadı', 'satin_alma' => 'Veri bulunamadı'],
'tam' => ['bozdurma' => 'Veri bulunamadı', 'satin_alma' => 'Veri bulunamadı'],
'ata' => ['bozdurma' => 'Veri bulunamadı', 'satin_alma' => 'Veri bulunamadı'],
'bilezik' => ['bozdurma' => 'Veri bulunamadı', 'satin_alma' => 'Veri bulunamadı']
];
if (!$html) {
return $fiyatlar;
}
// Farklı regex pattern'leri deneyelim
$patterns = [
// Pattern 1: Orijinal pattern
'gram' => '/<tr id="kc_GRAM">.*?<td id="alis">([^<]+)<\/td>.*?<td id="satis">([^<]+)<\/td>/s',
'ceyrek' => '/<tr id="kc_CEYREK">.*?<td id="alis">([^<]+)<\/td>.*?<td id="satis">([^<]+)<\/td>/s',
'yarim' => '/<tr id="kc_YARIM">.*?<td id="alis">([^<]+)<\/td>.*?<td id="satis">([^<]+)<\/td>/s',
'tam' => '/<tr id="kc_TEK">.*?<td id="alis">([^<]+)<\/td>.*?<td id="satis">([^<]+)<\/td>/s',
'ata' => '/<tr id="kc_ATA">.*?<td id="alis">([^<]+)<\/td>.*?<td id="satis">([^<]+)<\/td>/s',
'bilezik' => '/<tr id="kc_AYAR22">.*?<td id="alis">([^<]+)<\/td>.*?<td id="satis">([^<]+)<\/td>/s'
];
foreach ($patterns as $type => $pattern) {
if (preg_match($pattern, $html, $matches)) {
$fiyatlar[$type]['bozdurma'] = trim($matches[1]);
$fiyatlar[$type]['satin_alma'] = trim($matches[2]);
echo "<!-- Debug: $type found: " . $fiyatlar[$type]['bozdurma'] . " / " . $fiyatlar[$type]['satin_alma'] . " -->\n";
} else {
echo "<!-- Debug: $type not found with pattern -->\n";
}
}
// Alternatif pattern deneyelim
if ($fiyatlar['gram']['bozdurma'] == 'Veri bulunamadı') {
echo "<!-- Debug: Trying alternative patterns -->\n";
// Tüm fiyatları tek seferde arayalım
if (preg_match_all('/<td id="(alis|satis)">([^<]+)<\/td>/', $html, $all_matches)) {
echo "<!-- Debug: All price matches: " . count($all_matches[0]) . " -->\n";
}
}
return $fiyatlar;
}
// Ana işlem
$html = getAltinFiyatlari();
$fiyatlar = parseAltinFiyatlari($html);
?>
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h5 class="mb-0">Yalova Altın Fiyatları</h5>
<span class="d-block m-t-5">
<small>Fiyatlar güncel olarak YAKUD Yalova Kuyumcular Derneği web sitesinden çekilmektedir.</small>
</span>
</div>
<div class="card-body table-border-style">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>Altın Türü</th>
<th>Miktar</th>
<th>Bozdurma</th>
<th>Satın Alma</th>
</tr>
</thead>
<tbody>
<tr>
<td>Gram Altın</td>
<td>1 Gram Külçe (24 Ayar)</td>
<td><?= htmlspecialchars($fiyatlar['gram']['bozdurma']) ?> TL</td>
<td><?= htmlspecialchars($fiyatlar['gram']['satin_alma']) ?> TL</td>
</tr>
<tr>
<td>Çeyrek Altın</td>
<td>1.754 Gram (22-ayar)</td>
<td><?= htmlspecialchars($fiyatlar['ceyrek']['bozdurma']) ?> TL</td>
<td><?= htmlspecialchars($fiyatlar['ceyrek']['satin_alma']) ?> TL</td>
</tr>
<tr>
<td>Yarım Altın</td>
<td>3.508 Gram (22-ayar)</td>
<td><?= htmlspecialchars($fiyatlar['yarim']['bozdurma']) ?> TL</td>
<td><?= htmlspecialchars($fiyatlar['yarim']['satin_alma']) ?> TL</td>
</tr>
<tr>
<td>Tam Altın</td>
<td>7.016 Gram (22-ayar)</td>
<td><?= htmlspecialchars($fiyatlar['tam']['bozdurma']) ?> TL</td>
<td><?= htmlspecialchars($fiyatlar['tam']['satin_alma']) ?> TL</td>
</tr>
<tr>
<td>Ata Altın</td>
<td>7.216 Gram (22-ayar)</td>
<td><?= htmlspecialchars($fiyatlar['ata']['bozdurma']) ?> TL</td>
<td><?= htmlspecialchars($fiyatlar['ata']['satin_alma']) ?> TL</td>
</tr>
<tr>
<td>22 Ayar Bilezik</td>
<td>1 Gram (22-ayar)</td>
<td><?= htmlspecialchars($fiyatlar['bilezik']['bozdurma']) ?> TL</td>
<td><?= htmlspecialchars($fiyatlar['bilezik']['satin_alma']) ?> TL</td>
</tr>
</tbody>
</table>
</div>
<?php if ($fiyatlar['gram']['bozdurma'] == 'Veri bulunamadı'): ?>
<div class="alert alert-warning mt-3">
<small>Altın fiyatları şu anda yüklenemedi. Lütfen daha sonra tekrar deneyin.</small>
</div>
<?php endif; ?>
</div>
</div>
</div>