Recurro a esta Comunidad por que es la que mas me ha apoyado (ademas de ser la unica donde soy miembro activo ;D)
Pues bien este es mi dilema.
directamente lo que quiero hacer es lo siguiente:
Quiero en mi foro Agregar mediante botones bbc un nombre de un char de tibia.com
ejemplo:
[tibia]Break Blade[/tibia]
y con el bbc me traducira a este enlace
Lainaa<a href="http://www.tibia.com/community/?subtopic=characters&name=Break+Blade">Break Blade</a>
Ahora bien eso es basico y lo puedo hacer.. lo que quiero apartir de ahi es extraer la informacion de la pagina en cuestion
http://www.tibia.com/community/?subtopic=characters&name=Break Bladeestraer los datos de este player
Lainaa
Name: Break Blade
Sex: male
Profession: Paladin
Level: 7
Achievement Points: 0
World: Dolera
Residence: Rookgaard
Last login: Mar 07 2011, 10:16:19 CET
Account Status: Free Account
Y poder mostrar los en mi foro...
ademas de si esta online o no
lo cual se conseguiria tomando el nombre del char (Break Blade) y el servidor, para entrar a :
http://www.tibia.com/community/?subtopic=worlds&world=Doleray hacer una busqueda en ese listado del nombre : Break Blade
si lo encuentra dar como resultado un
ONLINE y si no lo encuentra dar un
OFFLINEesto con el fin de crear una lista de targets para el tibia :D
algo muy util para los que jugamos este juego :D MMORPG :D Espero poder contar con su orientacion en este tema.
Ahora Bien Buscando en diferentes Sitios en internet he logrado conseguir algo de codigo para este Proyecto, pero no tengo las capacidades suficientes como para poderlo entender e implementar a su completo funcionamiento...
aqui los agrego tal como lo encontre.
<?
function getBeetween($from,$to,$string)
{
$result = explode($from, $string);
$res_arr = explode($to,$result[1]);
return $res_arr[0];
}
function httpSocketConnection($host, $method, $path, $data)
{
$method = strtoupper($method);
if ($method == "GET")
<?
function getBeetween($from,$to,$string)
{
$result = explode($from, $string);
$res_arr = explode($to,$result[1]);
return $res_arr[0];
}
function httpSocketConnection($host, $method, $path, $data)
{
$method = strtoupper($method);
if ($method == "GET")
{
$path.= '?'.$data;
}
$filePointer = fsockopen($host, 80, $errorNumber, $errorString, 5);
if (!$filePointer)
{
logEvent('debug', 'Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n');
return false;
}
$requestHeader = $method." ".$path." HTTP/1.1\r\n";
$requestHeader.= "Host: ".$host."\r\n";
$requestHeader.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
$requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";
if ($method == "POST")
{
$requestHeader.= "Content-Length: ".strlen($data)."\r\n";
}
$requestHeader.= "Connection: close\r\n\r\n";
if ($method == "POST")
{
$requestHeader.= $data;
}
fwrite($filePointer, $requestHeader);
$responseHeader = '';
$responseContent = '';
do
{
$responseHeader.= fread($filePointer, 1);
}
while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader));
if (!strstr($responseHeader, "Transfer-Encoding: chunked"))
{
while (!feof($filePointer))
{
$responseContent.= fgets($filePointer, 128);
}
}
else
{
while ($chunk_length = hexdec(fgets($filePointer)))
{
$responseContentChunk = '';
$read_length = 0;
while ($read_length < $chunk_length)
{
$responseContentChunk .= fread($filePointer, $chunk_length - $read_length);
$read_length = strlen($responseContentChunk);
}
$responseContent.= $responseContentChunk;
fgets($filePointer);
}
}
return chop( $responseContent );
}
function getPlayerInfo($name)
{
$edit['voc'] = array("None" => "N","Sorcerer" => "S","Druid" => "D","Paladin" => "P","Knight" => "K","Master Sorcerer" => "MS","Elder Druid" => "ED","Royal Paladin" => "RP","Elite Knight" => "EK");
$str = httpSocketConnection('www.tibia.com','GET','/community/index.php','subtopic=character&name='.str_replace(array(' ','~'),array('+',''),$name));
if (eregi('does not exist.',$str))
{
return "Character ".$name." does not exist.";
}
else
{
return getBeetween('Name:</TD><TD>','</TD></TR>',$str)." ".
//(getBeetween('Former Names:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('Name:</TD><TD>','</TD></TR>',$str):'-').'|'.
//getBeetween('Sex:</TD><TD>','</TD></TR>',$str).' '.
getBeetween('Level:</TD><TD>','</TD></TR>',$str)." lvl ".
getBeetween('Profession:</TD><TD>','</TD></TR>',$str)."\n".
getBeetween('World:</TD><TD>','</TD></TR>',$str).", ".
getBeetween('Residence:</TD><TD>','</TD></TR>',$str)."\n".
//(getBeetween('House:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('House:</TD><TD>','</TD></TR>',$str):'-').'|'.
//(getBeetween('membership:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('membership:</TD><TD>','</TD></TR>',$str):'-').'|'.
str_replace(' ',' ',getBeetween('Last login:</TD><TD>','</TD></TR>',$str))."\n".
//getBeetween('Comment:</TD><TD>','</TD></TR>',$str).'|'.
getBeetween('Account Status:</TD><TD>','</TD></TR>',$str).' ';
}
}
//echo getPlayerInfo('Wezyr Chaosu').'<br/>';
echo getPlayerInfo(str_replace("\'","'",$_GET['char']));
?>
{
$path.= '?'.$data;
}
$filePointer = fsockopen($host, 80, $errorNumber, $errorString, 5);
if (!$filePointer)
{
logEvent('debug', 'Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n');
return false;
}
$requestHeader = $method." ".$path." HTTP/1.1\r\n";
$requestHeader.= "Host: ".$host."\r\n";
$requestHeader.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
$requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";
if ($method == "POST")
{
$requestHeader.= "Content-Length: ".strlen($data)."\r\n";
}
$requestHeader.= "Connection: close\r\n\r\n";
if ($method == "POST")
{
$requestHeader.= $data;
}
fwrite($filePointer, $requestHeader);
$responseHeader = '';
$responseContent = '';
do
{
$responseHeader.= fread($filePointer, 1);
}
while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader));
if (!strstr($responseHeader, "Transfer-Encoding: chunked"))
{
while (!feof($filePointer))
{
$responseContent.= fgets($filePointer, 128);
}
}
else
{
while ($chunk_length = hexdec(fgets($filePointer)))
{
$responseContentChunk = '';
$read_length = 0;
while ($read_length < $chunk_length)
<?
function getBeetween($from,$to,$string)
{
$result = explode($from, $string);
$res_arr = explode($to,$result[1]);
return $res_arr[0];
}
function httpSocketConnection($host, $method, $path, $data)
{
$method = strtoupper($method);
if ($method == "GET")
{
$path.= '?'.$data;
}
$filePointer = fsockopen($host, 80, $errorNumber, $errorString, 5);
if (!$filePointer)
{
logEvent('debug', 'Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n');
return false;
}
$requestHeader = $method." ".$path." HTTP/1.1\r\n";
$requestHeader.= "Host: ".$host."\r\n";
$requestHeader.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
$requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";
if ($method == "POST")
{
$requestHeader.= "Content-Length: ".strlen($data)."\r\n";
}
$requestHeader.= "Connection: close\r\n\r\n";
if ($method == "POST")
{
$requestHeader.= $data;
}
fwrite($filePointer, $requestHeader);
$responseHeader = '';
$responseContent = '';
do
{
$responseHeader.= fread($filePointer, 1);
}
while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader));
if (!strstr($responseHeader, "Transfer-Encoding: chunked"))
{
while (!feof($filePointer))
{
$responseContent.= fgets($filePointer, 128);
}
}
else
{
while ($chunk_length = hexdec(fgets($filePointer)))
{
$responseContentChunk = '';
$read_length = 0;
while ($read_length < $chunk_length)
{
$responseContentChunk .= fread($filePointer, $chunk_length - $read_length);
$read_length = strlen($responseContentChunk);
}
$responseContent.= $responseContentChunk;
fgets($filePointer);
}
}
return chop( $responseContent );
}
function getPlayerInfo($name)
{
$edit['voc'] = array("None" => "N","Sorcerer" => "S","Druid" => "D","Paladin" => "P","Knight" => "K","Master Sorcerer" => "MS","Elder Druid" => "ED","Royal Paladin" => "RP","Elite Knight" => "EK");
$str = httpSocketConnection('www.tibia.com','GET','/community/index.php','subtopic=character&name='.str_replace(array(' ','~'),array('+',''),$name));
if (eregi('does not exist.',$str))
{
return "Character ".$name." does not exist.";
}
else
{
return getBeetween('Name:</TD><TD>','</TD></TR>',$str)." ".
//(getBeetween('Former Names:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('Name:</TD><TD>','</TD></TR>',$str):'-').'|'.
//getBeetween('Sex:</TD><TD>','</TD></TR>',$str).' '.
getBeetween('Level:</TD><TD>','</TD></TR>',$str)." lvl ".
getBeetween('Profession:</TD><TD>','</TD></TR>',$str)."\n".
getBeetween('World:</TD><TD>','</TD></TR>',$str).", ".
getBeetween('Residence:</TD><TD>','</TD></TR>',$str)."\n".
//(getBeetween('House:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('House:</TD><TD>','</TD></TR>',$str):'-').'|'.
//(getBeetween('membership:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('membership:</TD><TD>','</TD></TR>',$str):'-').'|'.
str_replace(' ',' ',getBeetween('Last login:</TD><TD>','</TD></TR>',$str))."\n".
//getBeetween('Comment:</TD><TD>','</TD></TR>',$str).'|'.
getBeetween('Account Status:</TD><TD>','</TD></TR>',$str).' ';
}
}
//echo getPlayerInfo('Wezyr Chaosu').'<br/>';
echo getPlayerInfo(str_replace("\'","'",$_GET['char']));
?>
{
$responseContentChunk .= fread($filePointer, $chunk_length - $read_length);
$read_length = strlen($responseContentChunk);
}
$responseContent.= $responseContentChunk;
fgets($filePointer);
}
}
return chop( $responseContent );
}
function getPlayerInfo($name)
{
$edit['voc'] = array("None" => "N","Sorcerer" => "S","Druid" => "D","Paladin" => "P","Knight" => "K","Master Sorcerer" => "MS","Elder Druid" => "ED","Royal Paladin" => "RP","Elite Knight" => "EK");
$str = httpSocketConnection('www.tibia.com','GET','/community/index.php','subtopic=character&name='.str_replace(array(' ','~'),array('+',''),$name));
if (eregi('does not exist.',$str))
{
return "Character ".$name." does not exist.";
}
else
{
return getBeetween('Name:</TD><TD>','</TD></TR>',$str)." ".
//(getBeetween('Former Names:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('Name:</TD><TD>','</TD></TR>',$str):'-').'|'.
//getBeetween('Sex:</TD><TD>','</TD></TR>',$str).' '.
getBeetween('Level:</TD><TD>','</TD></TR>',$str)." lvl ".
getBeetween('Profession:</TD><TD>','</TD></TR>',$str)."\n".
getBeetween('World:</TD><TD>','</TD></TR>',$str).", ".
getBeetween('Residence:</TD><TD>','</TD></TR>',$str)."\n".
//(getBeetween('House:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('House:</TD><TD>','</TD></TR>',$str):'-').'|'.
//(getBeetween('membership:</TD><TD>','</TD></TR>',$str)!=''?getBeetween('membership:</TD><TD>','</TD></TR>',$str):'-').'|'.
str_replace(' ',' ',getBeetween('Last login:</TD><TD>','</TD></TR>',$str))."\n".
//getBeetween('Comment:</TD><TD>','</TD></TR>',$str).'|'.
getBeetween('Account Status:</TD><TD>','</TD></TR>',$str).' ';
}
}
//echo getPlayerInfo('Wezyr Chaosu').'<br/>';
echo getPlayerInfo(str_replace("\'","'",$_GET['char']));
?>
Fuente: hxxp://tpforums.org/forum/thread-5233.html
Codigo 2
<?php
$char = str_replace("\'","'",$_GET['char']);
echo $_GET['test'];
$charSite = file_get_contents('http://www.tibia.com/community/?subtopic=character&name='.str_replace(array(' ','~'),array('+',''),$char));
$splitA = explode('<TR><TD BGCOLOR="#505050" CLASS=white><B>', $charSite);
$splitB = explode('</B></TD></TR>',$splitA[1]);
if($splitB[0] == "Could not find character"){
echo 'The character '.$char.' does not exist.';
}else{
$splitA = explode('Name:</TD><TD>', $charSite);
$splitB = explode('</TD></TR>',$splitA[1]);
echo $splitB[0]."<p>";//name, to fix the capitals
$name = $splitB[0];
$splitA = explode('Sex:</TD><TD>', $charSite);
$splitB = explode('</TD></TR>',$splitA[1]);
echo $splitB[0]."<p>";//sex
$splitA = explode('Profession:</TD><TD>', $charSite);
$splitB = explode('</TD></TR>',$splitA[1]);
echo $splitB[0]."<p>";//profession
$splitA = explode('Level:</TD><TD>', $charSite);
$splitB = explode('</TD></TR>',$splitA[1]);
echo $splitB[0]."<p>"; //level
$splitA = explode('World:</TD><TD>', $charSite);
$splitB = explode('</TD></TR>',$splitA[1]);
echo $splitB[0]."<p>"; //world
$world = $splitB[0];
$splitA = explode('Residence:</TD><TD>', $charSite);
$splitB = explode('</TD></TR>',$splitA[1]);
echo $splitB[0]."<p>"; //residence
$splitA = explode('House:</TD><TD>', $charSite);
$splitB = explode('</TD></TR>',$splitA[1]);
echo $splitB[0]."<p>"; //house
$splitA = explode('membership:</TD><TD>', $charSite);
$splitB = explode('</TD></TR>',$splitA[1]);
echo $splitB[0]."<p>"; //guild
$splitA = explode('Last login:</TD><TD>', $charSite);
$splitB = explode('</TD></TR>',$splitA[1]);
echo $splitB[0]."<p>"; //last login
$splitA = explode('Comment:</TD><TD>', $charSite);
$splitB = explode('</TD></TR>',$splitA[1]);
echo $splitB[0]."<p>"; //comment
$splitA = explode('Status:</TD><TD>', $charSite);
$splitB = explode('</TD></TR>',$splitA[1]);
echo $splitB[0]."<p>"; //account status
$splitA = explode('*'.str_replace(" ","*",$name).'</NOBR></TD><TD WIDTH=10%><NOBR>'.$world.'</NOBR></TD><TD WIDTH=70%><B CLASS=green>', $charSite);
$splitB = explode('</B></TD><TD>',$splitA[1]);
echo $splitB[0]."<p>";
}
?>
Fuente: hxxp://tpforums.org/forum/thread-6279.html
MUCHAS GRACIAS POR SU ATENCION ;D y espero su respuesta...!!!
(disculpen las mayusculas :laugh:)
Ponerle reto a un tema para que lo hagan gratis y rápido no funciona.Digamos que el código ese que das no es muy simple de poner el bbcodes, tendrías que crear una validación muy cumpleja y sólo sería un código por bbcode (a duras penas). Intentaste ver cómo funciona SMF y crear el bbcode por tu cuenta?
De hecho sigo en el proceso de adaptación y conocimiento...
ya he creado el principio de la modificación.
[tibia]Nombre del Character[/tibia]
Modificando el subs.php
pero sigo masticando todo el lenguaje.. (pues el php es algo que tengo que aprender y la mejor manera de aprender es mediante los problemas y dándole su solución)
estoy desmembrado todas las partes del código que usan en este script para entender su funcionamiento y asi saber como adaptarlo..
la razon de ponerlo en este foro es por que me he dado cuenta de que el conocimiento del php que ustedes manejan es mas avanzado del que yo pueda llegar a interpretar y no considere inapropiado solicitar un poco de orientación.
mi pagina es http://www.mismanias.net
y aun esta en desarroyo...
Cuenta test
user: tester
pass: tester123
P.D. y la razon de llamarlo reto es por cuestion personal, pues con el conosimiento actual de php que manejo basicamente toda adaptacion o modificacion de codigo para mi en estos momentos es un reto, el cual poco a poco estoy asimilando.
Sería fácil con un código un poco más simple, ambos que diste estan bastante confusos y muy mal escritos. Cuando esté en mi PC con un poco más de tiempo lo reviso a fondo...
mientras mas aprendo mas descubro que es poco lo que se.
(como dijo socrates: Yo solo se que nose nada.)
y es que lo que en mi mente parecia tan simple y facil, ahora me estoy dando cuenta de que no es tan simple, y mas si las funciones que se utlizan de php no estan activas en mi servidor ???
encontre esta pagina que hace basicamente lo que quiero (la funcion de ONLINE y OFFLINE) pero desconosco el codigo que utiliza para funcionar o de que manera tiene acceso a los datos que presenta :-\
http://www.pskonejott.com (http://www.pskonejott.com)