Arama butonu
Bu konudaki kullanıcılar: 1 misafir
38
Cevap
5946
Tıklama
0
Öne Çıkarma
PHP ile sayfa içeriğinin bir kısmını çekmek
G
10 yıl
Teğmen
Konu Sahibi

Merhabalar arkadaşlar.
Bir oyunun sunucu durumlarını kendi sitemde göstermek istiyorum. Bunu IFRAME ile yapınca malesef arkaplanlarıda geliyor siteyle hiç mi hiç olmuyor. Ben içeriğini çekmek istiyorum lakin pek fazla bilgim yok bu konuda.

http://www.planetside-universe.com/server_status.php bu sitedeki sunucu durumlarını gösteren tablodan mesela kendi yapacağım tabloya sadece bazı yerleri çekmesini istiyorum.

Medium, Low, Up yazan yerleri çekmek istiyorum bunu nasıl yapabilirim. Örneğin şöyle birşey istiyorum.

<table>
<tr>
<td>Sunucu Konumu</td>
<td>Sunucu Adı</td>
<td>Sunucu Nüfusu</td>
<td>Sunucu Durumu</td>
</tr>
<tr>
<td>Avrupa</td>
<td>Miller</td>
<td>İçerik Çek</td>
<td>İçerik Çek</td>
</tr>
</table>





< Bu mesaj bu kişi tarafından değiştirildi Guazy -- 10 Ağustos 2014; 23:32:02 >

G
10 yıl
Yüzbaşı

birkaç dk bekler isen yapıyım hocam sana onu


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @BucaYer6
G
10 yıl
Yüzbaşı

** buyur usta çalışıyor


 
<html>
<head>
<title>çek gitsin be aga :)</title>
</head>
<body>
<?php
$site=file_get_contents("http://www.planetside-universe.com/server_status.php");

preg_match_all('@<span style="color:(.*?);">(.*?)</span>@si',$site,$sutun);

//echo '<pre>';
//print_r($sutun);
//echo '</pre>';

echo $sutun[2][0];
echo '<br>';
echo $sutun[2][2];
echo '<br>';
echo $sutun[2][4];
echo '<br>';
echo $sutun[2][6];
echo '<br>';
echo $sutun[2][8];
echo '<br>';
echo $sutun[2][10];
?>
</body>
</html>






Bu mesajda bahsedilenler: @zekaigulin
G
10 yıl
Yüzbaşı

 
<html>
<head>
<title>çek gitsin be aga :)</title>
</head>
<body>
<?php
$site=file_get_contents("http://www.planetside-universe.com/server_status.php");

preg_match_all('@<span style="color:(.*?);">(.*?)</span>@si',$site,$sutun);
preg_match_all('@<span style="color:(.*?);">(.*?)</span>@si',$site,$durumup);


echo $sutun[2][0]." ".$durumup[2][1];
echo '<br>';
echo $sutun[2][2]." ".$durumup[2][3];
echo '<br>';
echo $sutun[2][4]." ".$durumup[2][5];
echo '<br>';
echo $sutun[2][6]." ".$durumup[2][7];
echo '<br>';
echo $sutun[2][8]." ".$durumup[2][9];
echo '<br>';
echo $sutun[2][10]." ".$durumup[2][11];

?>
</body>
</html>



cıktısı :
 
Medium Up
Low Up
Medium Up
Medium Up
Medium Up
Low Up


bu bırazdaha duzenli halı kolay gelsin usta


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @BucaYer6
G
10 yıl
Teğmen
Konu Sahibi

Tamamdır çok teşekkür ederim.

http://ps2turkiye.com/status/v3.php güzel görünüyor.





< Bu mesaj bu kişi tarafından değiştirildi Guazy -- 11 Ağustos 2014; 7:54:25 >
Bu mesaja 1 cevap geldi.
G
10 yıl
Teğmen
Konu Sahibi

+ bir şey daha sorucam, mesela bu up yazan yeri çektikten sonra Açık. Down yazan kısmıda kapalı diye değişebilirmiyiz. Bu mümkünmü?

Kısaltıyorum,

Site verisi UP
Site verisi DOWN
Site verisi UNKNOWN
Site verisi Medium
Site verisi Low
Site verisi High

Bunların çıktısını

AÇIK
KAPALI
BİLİNMİYOR
ORTA
DÜŞÜK
YÜKSEK

diye değişebilirmiyiz siteden gelecek veriye göre.





< Bu mesaj bu kişi tarafından değiştirildi Guazy -- 11 Ağustos 2014; 6:31:26 >
Bu mesaja 1 cevap geldi.
G
10 yıl
Yüzbaşı

if($durumup[2][1]=="Up")
{
echo "Bu alan kapalı";

}
else
{

echo "bu alan acık";


}

// eger iki tane durum istiyorusanız açık kapalı dıye bunu yapabılırsınız .

ama
AÇIK
KAPALI
BİLİNMİYOR
ORTA
DÜŞÜK
YÜKSEK
bunları diyorsanız

$durumup[2][1];

switch($durumup)
{

case "UP";
echo "kapalı";
break;

case "Closed";
echo "Bu alan kapalı";
break;

.
.
.
.
.
.
.
.
diye gider hocam
}


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @BucaYer6
G
10 yıl
Teğmen
Konu Sahibi

2 kısımda yer alacak o istediklerim.

Sunucu Durumlarında Açık, Kapalı, Bilinmiyor
Sunucu Nüfusundan Düşük, Orta, Yüksek

Açık/Kapalı olan alanı yaptımda diğer alanı yapamadım.
DEMO:http://ps2turkiye.com/status/v3.php


 
switch($population)
{
case "High";
echo "Yüksek";
break;
case "Medium";
echo "Orta";
break;
case "Low";
echo "Düşük";
break;


Böyle yapınca oldu.


 
<?php
$serverStatus[2][1]="UP";
switch ($serverStatus[2][1]) {
case "UP":
echo "AÇIK";
break;
case "LOCKED":
echo "KİLİTLİ";
break;
case "MAINT":
echo "BAKIMDA";
break;
}
?>





< Bu mesaj bu kişi tarafından değiştirildi Guazy -- 15 Ağustos 2014; 3:11:35 >
Bu mesaja 1 cevap geldi.
G
10 yıl
Yüzbaşı

sorunsuz çalışıyor galıba hersey normal gibi


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @BucaYer6
G
10 yıl
Teğmen
Konu Sahibi

Bu site oyun sunucuların durumlarını doğru göstermiyor. Farklı bir site var bakalım onu denicem, orda durumları doğru görünüyor. Yapamazsam sizden yardım rica edebilirim tekrar. İlginiz için teşekkürler


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @zekaigulin
G
10 yıl
Yüzbaşı

Rica ederim , sitenin doğruluk veya sapma payını bilemiyorum , size elimden gelen kadarıyla yardım etmeye çalışırım.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @BucaYer6
G
10 yıl
Teğmen
Konu Sahibi

Buyur dostum, hedefhttps://forums.station.sony.com/ps2/index.php sitemiz burası.

Kırmızı alanlardaki verileri çekmek istiyorum.http://www.ps2turkiye.com/server-status.png Ben beceremedim doğrusu, işi ehline bırakalım :D

Sayfa içeriğine baktımda şöyle bir kod yapısı var. Acaba oraya gelecek kodları bulabilirmiyiz. Javascript ile çağırıyor sanırım içeriği.

 
<style>
.ssUnit{
width: 292px;
border-right: 1px solid rgba(9, 123, 133, 0.27);
float: left;
padding: 0 15px;
color: #8EACAE;
margin-top: 7px;
margin-bottom: 5px;
height: 40px;
}
.ssName{
float: left;
padding-bottom: 5px;
}
.ssStatus{
float: right;
}
</style>

<script>
var serverRes;
$.ajax({
url: 'https://forums.station.sony.com/ps2/status/print_status.php',
success: function(data) {
serverRes = data;
document.getElementById('serverStatus').innerHTML=serverRes;
}
});

</script>

<div id="serverStatus" class="serverStatus">Buraya sunucu tablosu gelecek.</div>


<script>
$(document).ready(function(){
$.get("https://forums.station.sony.com/ps2/data/status/current_status.txt",function(data){
var srvstatus = jQuery.parseJSON(data);

if(srvstatus.status == "" || srvstatus.status == "Normal" || srvstatus.status == "normal"){
$('#serverMessage').css('display', 'none');
return;
}

var statstring = "Status: " + srvstatus.timestamp + " - " + srvstatus.status;
$("#serverMessage").html(statstring);

});
});
</script>

<div id="serverMessage" style="padding-top: 25px; color: red; font-size: 16px; font-weight: bold;">Buraya sunucu mesajı gelecek.</div>





< Bu mesaj bu kişi tarafından değiştirildi Guazy -- 12 Ağustos 2014; 0:10:29 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @zekaigulin
G
10 yıl
Yüzbaşı

dizinin boş donmesinin sebebi div taglarının içinde olmasından dolayı kaynaklanıyor bu yüzden dizi boş donuyor

bunu yapmak hem zahmetli hemde beni aşan bir durum java dosyasının geldiği yere baktım ama adamlar session ile başka sayfaya yönlerndiriyor yazı başka bir site bulanursa

<span> tagları arasında bunu ilk site gibi çekebilirz


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @BucaYer6
G
10 yıl
Teğmen
Konu Sahibi

Valla zahmet olmazsa yapalım dostum. Tek eksiğimiz bu sunucu durumlarını sitemizde göstermek. allah razı olsun

http://ps2turkiye.com/status/ss.php


 
<html>
<head>
<title>çek gitsin be aga :)</title>
<style>
.ssUnit{
width: 292px;
border-right: 1px solid rgba(9, 123, 133, 0.27);
float: left;
padding: 0 15px;
color: #8EACAE;
margin-top: 7px;
margin-bottom: 5px;
height: 40px;
}
.ssName{
float: left;
padding-bottom: 5px;
}
.ssStatus{
float: right;
}
</style>
</head>
<body>

<?php
$server=file_get_contents("https://forums.station.sony.com/ps2/status/print_status.php");

preg_match_all('@Briggs (AU)</div><div class="ssStatus"><span style="color: green;">(.*?)</span>@si',$server,$status1);
preg_match_all('@Cobalt (EU)</div><div class="ssStatus"><span style="color: green;">(.*?)</span>@si',$server,$status2);
preg_match_all('@Connery (US West)</div><div class="ssStatus"><span style="color: green;">(.*?)</span>@si',$server,$status3);
preg_match_all('@Emerald (US East)</div><div class="ssStatus"><span style="color: green;">(.*?)</span>@si',$server,$status4);
preg_match_all('@Miller (EU)</div><div class="ssStatus"><span style="color: green;">(.*?)</span>@si',$server,$status5);


?>

<div style="height: 55px; margin: 0 auto; width: 978px; border: 1px solid #00464C; margin-top: 5px;">

<div class="ssUnit">
<div class="ssName">Briggs (AU)</div>
<div class="ssStatus">
<span style="color: green;"><?php echo "$status1"; ?></span>
</div>
<div style="clear: both;"></div>

<div class="ssName">Cobalt (EU)</div>
<div class="ssStatus">
<span style="color: green;"><?php echo "$status2"; ?></span>
</div>
<div style="clear: both;"></div></div>


<div class="ssUnit">
<div class="ssName">Connery (US West)</div>
<div class="ssStatus">
<span style="color: green;"><?php echo "$status3"; ?></span>
</div>
<div style="clear: both;"></div>

<div class="ssName">Emerald (US East)</div>
<div class="ssStatus">
<span style="color: green;"><?php echo "$status4"; ?></span>
</div>
<div style="clear: both;"></div>
</div>


<div class="ssUnit" style="border-right: none;">
<div class="ssName">Miller (EU)</div>
<div class="ssStatus">
<span style="color: green;"><?php echo "$status5"; ?></span>
</div>
<div style="clear: both;"></div>
</div>
</body>
</html>



böyle bisey denedim ama array yazıyor.





< Bu mesaj bu kişi tarafından değiştirildi Guazy -- 12 Ağustos 2014; 3:52:16 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @zekaigulin
G
10 yıl
Teğmen
Konu Sahibi

<html> 
<head>
<title>PlanetSide 2 - Server Status Script v3</title>
<link type="text/css" href="css/status.css" rel="stylesheet" media="screen" />
</head>
<body>
<?php
$servers=file_get_contents("https://forums.station.sony.com/ps2/status/print_status.php");
preg_match_all('@<span style="color: (.*?);">(.*?)</span>@si',$servers,$population);
preg_match_all('@<span style="color: (.*?);">(.*?)</span>@si',$servers,$status);

echo '<br><br>';

print_r($population);

echo '<br><br>';

print_r($status);

?>
</body>
</html>



Ben yapmaya çalışıyorumda. Print_r ile göstermeye çalışıyorum ama Array içi boş görünüyor.





< Bu mesaj bu kişi tarafından değiştirildi Guazy -- 13 Ağustos 2014; 10:51:02 >
Bu mesaja 1 cevap geldi.
G
10 yıl
Yüzbaşı

div içinde classları divlerde

span vs içinde dğil o yzden boş çıkıyor


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @BucaYer6
M
10 yıl
Çavuş

HTTP_USER_AGENT bilgisi olmadığı için Forbidden veriyor.


/** 
* Verilen bilgilere göre cURL kütüphanesini kullanarak baglantı yapar.
*@ param string $adres Bağlantı yapılacak sayfanın adresi.
*@ param string $ref HTTP_REFERER bilgisinde gösterilecek adres.
*@ return string HTML olarak sayfayı geri yollar.
*/


function baglan($adres,$ref = 'http://www.google.com/'){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $adres);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_REFERER,$ref);
curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch,CURLOPT_TIMEOUT,0);
$data = curl_exec($ch);
return $data;
}



$baglan = baglan('https://forums.station.sony.com/ps2/status/print_status.php');

preg_match_all('@<div class="ssName">(.*?)</div>@si', $baglan, $serverName);
preg_match_all('@<span style="color:(.*?);">(.*?)</span>@si', $baglan, $serverStatus);





< Bu mesaj bu kişi tarafından değiştirildi mertcane -- 13 Ağustos 2014; 13:45:11 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @BucaYer6
G
10 yıl
Teğmen
Konu Sahibi

Dostum, valla sayfa boş görünüyor naptımsa veri çekip görüntüleyemedim.

Fonksiyon.php
 
<?php

function baglan($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$data = curl_exec($curl);
curl_close($curl);
return str_replace(array("\n", "\t", "\r"), null, $data);
}

?>


index.php
 
<?php require "fonksiyon.php" ;?>
<html>
<head>
<title>PlanetSide 2 - Server Status Script v3</title>
</head>
<body>
<?php

$baglan = baglan("https://forums.station.sony.com/ps2/status/print_status.php");
preg_match('#<div style="height: 55px(.*?)</div></div>#', $baglan, $status);

print_r($status);
?>
</body>
</html>



Sonuç
 
Array ( )





< Bu mesaj bu kişi tarafından değiştirildi Guazy -- 13 Ağustos 2014; 16:01:46 >
Bu mesaja 2 cevap geldi.

Bu mesajda bahsedilenler: @mertcane
G
10 yıl
Yüzbaşı

güvendin başka site yok mu eger yok sa php de kocabaşlara danışcan artık


Bu mesaja 2 cevap geldi.

Bu mesajda bahsedilenler: @BucaYer6
G
10 yıl
Teğmen
Konu Sahibi

Valla ne yapacam bilmiyorum, her neyse dostum sağol ilgi ve alakan için. Artık 2018 de falan biri bi çözüm bulur buna, konuyu hortlatırlar.




Bu mesajda bahsedilenler: @zekaigulin