Ver Mensaje Individual
  #6 (permalink)  
Antiguo 25/04/2010, 23:38
iovan
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 5 meses
Puntos: 188
Respuesta: Como puedo obtener un valor de una cadena de texto

A vaya ya consegui tambien esto.

Como me gusta el PHP, lástima que no le dedique tanto tiempo pero pues espero ya acabar la escuela de una vez por todas. El único tiempo que estoy jugando con el PHP es en vacaciones, 2 veces al año =(

Bien mi código me quedó asi:

Código PHP:
Ver original
  1. <?php
  2. //Defino arrays
  3. $profile_url = '<a href="http://yourPHPforum.com/profile.forum?mode=viewprofile&u=19">Admin</a>'; //recibo esto por $_POST['id']
  4.  
  5.  
  6. //Obtengo el nickname
  7. function sacarnick($TheStr, $sLeft, $sRight){
  8.         $pleft = strpos($TheStr, $sLeft, 0);
  9.         if ($pleft !== false){
  10.                 $pright = strpos($TheStr, $sRight, $pleft + strlen($sLeft));
  11.                 If ($pright !== false) {
  12.                         return (substr($TheStr, $pleft + strlen($sLeft), ($pright - ($pleft + strlen($sLeft)))));
  13.                 }
  14.         }
  15.         return '';
  16. }
  17. $nickname = sacarnick($profile_url,'">','</a>');
  18.  
  19. //Obtengo el ID
  20. function sacarid($TheStr, $sLeft, $sRight){
  21.         $pleft = strpos($TheStr, $sLeft, 0);
  22.         if ($pleft !== false){
  23.                 $pright = strpos($TheStr, $sRight, $pleft + strlen($sLeft));
  24.                 If ($pright !== false) {
  25.                         return (substr($TheStr, $pleft + strlen($sLeft), ($pright - ($pleft + strlen($sLeft)))));
  26.                 }
  27.         }
  28.         return '';
  29. }
  30.  
  31. $profile_id = sacarid($profile_url,'u=','">');
  32.  
  33. //Abrimos código fuente
  34. $connect_link = "http://yourforum/login.forum?redirect=/profile.forum&mode=viewprofile&u=".$profile_id;
  35. $body = 'username=admin&password=123456&login=login&autologin=checked&redirect=/profile.forum&query=mode%3Dviewprofile%26u%3D'.$profile_id;
  36. $options = array('max_redirects' => 3 , 'method' => 'POST', 'content' => $body);
  37. $context = stream_context_create(array('http' => $options));
  38. $page = file_get_contents($connect_link, false, $context);
  39.  
  40. //Buscamos el nombre de usuario en el código fuente
  41. $filtro = '<title>Perfil - '.$nickname.'</title>';
  42.     if(strstr($page,$filtro)){
  43.             //Busco la cantidad de mensajes posteados
  44.             $max_carct = strlen($page);
  45.             $filtro1= 'Cantidad de envíos';
  46.             $filtro2 = '</span></dd></dl><div class="separator">&nbsp;</div><dl id="field_id-13"><dt><span style="color:#05A8FF;">Puntos Vit</span>';
  47.             $total = strpos($page,$filtro1);
  48.             $total2 = strpos($page,$filtro2);
  49.             $total3 = ($max_carct - $total2 - 0);
  50.             $total4 = substr($page,$total,-$total3);
  51.             //Hago otro calculo
  52.             $filtro3 = '<span style="color:#d6d6d6;">';
  53.             $total5 = strstr($total4,$filtro3);
  54.             //Un calculo más
  55.             $filtro4 = '<span class="field_uneditable">';
  56.             $total_msg = substr(strstr($total5,$filtro4), 31);
  57.                    //Validamos mensajes suficientes
  58.                    if($total_msg >= 100) {
  59.                        
  60.                        echo "Te puedes registrar";
  61.                        
  62.                        } else { echo "No es posible tu registro"; } //End if total_msg
  63.                    
  64.                    
  65.     } else { echo "Los datos introducidos son incorrectos."; }
  66. ?>

Espero que le sirva a alguien, saludos
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Última edición por iovan; 26/04/2010 a las 00:45