Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

[SOLUCIONADO] pre_macth_all en intentado de todo y no logro sacarlo

Estas en el tema de pre_macth_all en intentado de todo y no logro sacarlo en el foro de WordPress en Foros del Web. Hola amigos, les traigo mi problemita. Estoy creando en php una funcion para un shortcode en wordpress que llama "fuente". Lo que hara sera tomar ...

  #1 (permalink)  
Antiguo 06/11/2013, 07:21
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
pre_macth_all en intentado de todo y no logro sacarlo

Hola amigos, les traigo mi problemita. Estoy creando en php una funcion para un shortcode en wordpress que llama "fuente".
Lo que hara sera tomar la url o link y obtener nombre de esta web, el error esta en que cuando una web tiene https me salta un error y si solo tiene www me sala error, bueno es obligatorio que tenga http para que funcione y quiero que funcione con https o http, mas abajo le dejo el codigo para ver que me falta.

Shortcode completo:

Código PHP:
add_shortcode'fuente''fuente_check_shortcode' );

function 
fuente_check_shortcode$atts$content null ) {
    
function 
getTitle($content){
    
$str file_get_contents($content);
    if(
strlen($str)>0){
        
preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
        return 
$title[1];
    }
}
    
$ti getTitle($content);
    
            return 
'
            <style>
            #fuente{            
                    float:left;
                    width:100%;
                    text-align:left;
                    padding: 10px 0 10px 0;
                    margin: 0 0 0 -10px;
                    color: #000;
                    text-decoration: none;
                    z-index:100;
                    font-family: "Lato", Helvetica, Arial, sans-serif;
            }
            #info{
                    float:left;
                    margin-left:10px;
                    color: #000;
                    text-decoration: none;
                    font-family: "Lato", Helvetica, Arial, sans-serif;    
                    font-weight: 500;
                    font-size:18px;            
                
                }
            </style>

            
            <div id="fuente">
            
            <span id="info">Fuente de información:</span><span style="float:left; padding: 5px 0 0 7px;"><hr style="width:528px;position:absolute;color:#E6E6E6"></span>
            <br>
            <br>
            <br>
            <span style="float:left;padding:0 10px 0;"><img src="http://g.etfv.co/'
.$content.'" width="16" height="16"></span><span><a href="'.$content.'"><b>'.$ti.'</b></a></span>
</div>
            '
;

    

La parte donde obtengo el titulo:

Código PHP:
function getTitle($content){
    
$str file_get_contents($content);
    if(
strlen($str)>0){
        
preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
        return 
$title[1];
    }
}
    
$ti getTitle($content); 
Y lo muesto con:

Código PHP:
$ti 
En conclusion si coloco la url con http todo funciona bien pero al colocarla con https sale esto

Cita:
Warning: file_get_contents() [function.file-get-contents]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in F:\Program\Web\xampp\htdocs\warez\wp-content\themes\mystique\functions.php on line 768

Warning: file_get_contents(https://google.com) [function.file-get-contents]: failed to open stream: Invalid argument in F:\Program\Web\xampp\htdocs\warez\wp-content\themes\mystique\functions.php on line 768
  #2 (permalink)  
Antiguo 06/11/2013, 07:40
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: error con https con file_get_contents()

Revisa este tema. El error es porque posiblemente no tengas habilitado módulo SSL para apache ó no tienes habilitada la directiva allow_url_fopen en el php.ini.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 06/11/2013, 09:10
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: error con https con file_get_contents()

Cita:
Iniciado por jonni09lo Ver Mensaje
Revisa este [URL="http://www.forosdelweb.com/f18/como-puedo-abrir-https-255489/"]tema[/URL]. El error es porque posiblemente no tengas habilitado módulo SSL para apache ó no tienes habilitada la directiva allow_url_fopen en el php.ini.

Saludos
Gracias lo resolvi de esta manera

http://www.bluehosting.cl/hosting/knowledgebase/173/Habilitar-allowurlfopen.html

Tengo otra inquietud

cuando se inserta dentro de las etiquetas [fuente]el link[/fuente] si se coloca en texto plano todo bien pero cuando es en forma de link me salta un error

Cita:
Warning: file_get_contents(<a href="http://www.gratisprogramas.us/descarga/la-contrasena-mas-usada-en-adobe-resulto-ser-123456%E2%80%B3/">http://www.gratisprogramas.us/descarga/la-contrasena-mas-usada-en-adobe-resulto-ser-123456%E2%80%B3/</a>): failed to open stream: No such file or directory in /home/gratispr/public_html/wp-content/themes/mystique/functions.php on line 738
Como lo soluciono o por donde empiezo?
  #4 (permalink)  
Antiguo 06/11/2013, 09:20
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: error con https con file_get_contents()

No puedes usar file_get_contents de esa manera siempre debes de pasarle una url valida, no una etiqueta html. Lo que debes de hacer es detectar la url y pasársela a file_get_contents

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #5 (permalink)  
Antiguo 06/11/2013, 09:23
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: error con https con file_get_contents()

Cita:
Iniciado por jonni09lo Ver Mensaje
No puedes usar file_get_contents de esa manera siempre debes de pasarle una url valida, no una etiqueta html. Lo que debes de hacer es detectar la url y pasársela a file_get_contents

Saludos
como empezaria
  #6 (permalink)  
Antiguo 06/11/2013, 09:31
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: error con https con file_get_contents()

Antes de guiarte es preciso de que nos guíes primero. Que es lo que estás haciendo para querer sacar la información de un link.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #7 (permalink)  
Antiguo 06/11/2013, 09:36
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: error con https con file_get_contents()

Cita:
Iniciado por jonni09lo Ver Mensaje
Antes de guiarte es preciso de que nos guíes primero. Que es lo que estás haciendo para querer sacar la información de un link.

Saludos
ok. al inserta un enlace de esta forma

http://www.gratisprogramas.us/descarga/la-contrasena-mas-usada-en-adobe-resulto-ser-123456/

todo funciona bien pero cuando lo insertas como hipervinculo sale como de dije mas arriba con ese error
  #8 (permalink)  
Antiguo 06/11/2013, 09:49
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: error con https con file_get_contents()

Por eso, como obtienes ese hipervinculo. Igual debes de usar expresiones regulares.

Ejemplo

Código PHP:
Ver original
  1. $text = '<a href="http://google.com">bla bla bla</a>';
  2.  
  3. preg_match_all("#<a href=\"(.*?)\">(.*?)<\/a>#", $text, $matches);
  4.  
  5. $counnt = count($matches[1]);
  6. for($i = 0; $i < count($matches[1]); $i++){
  7.     file_get_contents($matches[1][$i]);
  8. }

Esa sería una idea.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #9 (permalink)  
Antiguo 06/11/2013, 10:09
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: error con https con file_get_contents()

Cita:
Iniciado por jonni09lo Ver Mensaje
Por eso, como obtienes ese hipervinculo. Igual debes de usar expresiones regulares.

Ejemplo

Código PHP:
Ver original
  1. $text = '<a href="http://google.com">bla bla bla</a>';
  2.  
  3. preg_match_all("#<a href=\"(.*?)\">(.*?)<\/a>#", $text, $matches);
  4.  
  5. $counnt = count($matches[1]);
  6. for($i = 0; $i < count($matches[1]); $i++){
  7.     file_get_contents($matches[1][$i]);
  8. }

Esa sería una idea.

Saludos
me sigue saliendo el mismo error

Cita:
Warning: file_get_contents(<a href="http://www.gratisprogramas.us/descarga/la-contrasena-mas-usada-en-adobe-resulto-ser-123456/">http://www.gratisprogramas.us/descarga/la-contrasena-mas-usada-en-adobe-resulto-ser-123456/</a>) [function.file-get-contents]: failed to open stream: Invalid argument in F:\Program\Web\xampp\htdocs\warez\wp-content\themes\mystique\functions.php on line 764
talvez estoy haciendo algo mal

Código PHP:
function getTitle($content){
    
$str file_get_contents($content);
    if(
strlen($str)>0){
        
preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
        return 
$title[1];
    }
    
    
}
    
$ti getTitle($content);
    
$text $ti;
 
preg_match_all("#<a href=\"(.*?)\">(.*?)<\/a>#"$text$matches);
 
$counnt count($matches[1]);
for(
$i 0$i count($matches[1]); $i++){
    
$ti file_get_contents($matches[1][$i]);

  #10 (permalink)  
Antiguo 06/11/2013, 10:16
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: error con https con file_get_contents()

El problema parece ser $content. Por favor muéstranos como obtienes esa variable y explícanos que contiene esa variable.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #11 (permalink)  
Antiguo 06/11/2013, 10:29
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: error con https con file_get_contents()

Cita:
Iniciado por jonni09lo Ver Mensaje
El problema parece ser $content. Por favor muéstranos como obtienes esa variable y explícanos que contiene esa variable.

Saludos
la variable $content obtiene el contenido de las etiquetas [fuente]contenido[/fuente] que en este caso por ejemplo es:

Código PHP:
<a href="https://google.com" title="Google">Google</a
tengo que cojer solo lo que esta en href de lo contrario que no haga nada, quiero que coja desde http o https la url completa
  #12 (permalink)  
Antiguo 06/11/2013, 10:35
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: error con https con file_get_contents()

Me lo imaginé, entonces debes alterar la logica de la funcion. Algo asi:

Código PHP:
Ver original
  1. function getUrl($text){
  2.     preg_match_all("#<a href=\"(.*?)\">(.*?)<\/a>#", $text, $matches);
  3.     return $matches;
  4. }
  5.  
  6. function getTitle($content){
  7.     $matches = getUrl($content);
  8.    
  9.     $titles = array();
  10.    
  11.     if( isset($matches[1]) && !empty($matches[1]) ){
  12.         $counnt = count($matches[1]);
  13.         for($i = 0; $i < $counnt; $i++){
  14.             $str = file_get_contents($matches[1][$i]);
  15.             if(strlen($str)>0){
  16.                 preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
  17.                 $titles[] = $title[1];
  18.             }
  19.         }
  20.     }
  21.     return $titles;
  22. }

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #13 (permalink)  
Antiguo 06/11/2013, 10:48
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: error con https con file_get_contents()

Cita:
Iniciado por jonni09lo Ver Mensaje
Me lo imaginé, entonces debes alterar la logica de la funcion. Algo asi:

Código PHP:
Ver original
  1. function getUrl($text){
  2.     preg_match_all("#<a href=\"(.*?)\">(.*?)<\/a>#", $text, $matches);
  3.     return $matches;
  4. }
  5.  
  6. function getTitle($content){
  7.     $matches = getUrl($content);
  8.    
  9.     $titles = array();
  10.    
  11.     if( isset($matches[1]) && !empty($matches[1]) ){
  12.         $counnt = count($matches[1]);
  13.         for($i = 0; $i < $counnt; $i++){
  14.             $str = file_get_contents($matches[1][$i]);
  15.             if(strlen($str)>0){
  16.                 preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
  17.                 $titles[] = $title[1];
  18.             }
  19.         }
  20.     }
  21.     return $titles;
  22. }

Saludos
Gracias, tu codigo me lanza esto:
Código PHP:
http://www.gratisprogramas.us/descarga/la-contrasena-mas-usada-en-adobe-resulto-ser-123456/" width="16" height="16"> 
pero solo quiero cojer esto:

Código PHP:
http://www.gratisprogramas.us/descarga/la-contrasena-mas-usada-en-adobe-resulto-ser-123456/ 
  #14 (permalink)  
Antiguo 06/11/2013, 11:25
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: error con https con file_get_contents()

Como te comenté el asunto es que debes estudiar expresiones regulares:


Código PHP:
Ver original
  1. preg_match_all("/<a href="([^"]*)"[^>]+>([^<]*)<\/a>/", $text, $matches);

Debería valer

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #15 (permalink)  
Antiguo 07/11/2013, 09:19
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
pre_macth_all en intentado de todo y no logro sacarlo

Tengo una expresion en html como esta:

Código HTML:
<a href="http://www.gratisprogramas.us/" title="">http://www.gratisprogramas.us/</a> 
Uso este preg_match

Código PHP:
$str preg_match('/<a[^>]*href="([^"]*)"[^>]*>.*<\/a>/'$content$matches);

echo 
$str
para que me extraiga

Código HTML:
http://www.gratisprogramas.us/
y no logro hacerlo, me pueden decir como solucionarlo?
  #16 (permalink)  
Antiguo 07/11/2013, 09:33
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

Código PHP:
Ver original
  1. <?php
  2. $text = '<a href="http://www.gratisprogramas.us/" title="">http://www.gratisprogramas.us/</a> ';
  3.  
  4. preg_match_all('/<a href="([^"]*)"[^>]+>([^<]*)<\/a>/', $text, $matches);
  5.  
  6. $counnt = count($matches[1]);
  7. for($i = 0; $i < count($matches[1]); $i++){
  8.     echo($matches[1][$i]) ."<br>";
  9. }


Se ve que no probaste lo que te dejé en tu tema de file contents

La unica diferencia con el que te dí fué cambiar comillas dobles por simples para encerrar el patrón...

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #17 (permalink)  
Antiguo 07/11/2013, 09:36
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

Cita:
Iniciado por jonni09lo Ver Mensaje
Código PHP:
Ver original
  1. <?php
  2. $text = '<a href="http://www.gratisprogramas.us/" title="">http://www.gratisprogramas.us/</a> ';
  3.  
  4. preg_match_all('/<a href="([^"]*)"[^>]+>([^<]*)<\/a>/', $text, $matches);
  5.  
  6. $counnt = count($matches[1]);
  7. for($i = 0; $i < count($matches[1]); $i++){
  8.     echo($matches[1][$i]) ."<br>";
  9. }


Se ve que no probaste lo que te dejé en tu tema de file contents

La unica diferencia con el que te dí fué cambiar comillas dobles por simples para encerrar el patrón...

Saludos
como hago para que me devuelva la url y no un valor booleano? solo me sale 1 ese es el problema
  #18 (permalink)  
Antiguo 07/11/2013, 09:40
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

Si estás usando preg_match, debes usar el tercer parámetro para recoger las coincidencias. Consulta el manual.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #19 (permalink)  
Antiguo 07/11/2013, 09:46
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

Cita:
Iniciado por jonni09lo Ver Mensaje
Si estás usando preg_match, debes usar el tercer parámetro para recoger las coincidencias. Consulta el manual.

Saludos
no me puedes decir como, si me aparece error o la expresion dice array o sale 1
  #20 (permalink)  
Antiguo 07/11/2013, 10:05
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

Tu titulo dice "pre_macth_all en intentado de todo y no logro sacarlo". Si has intentado de todo, cosa que dudo por tus respuestas, entender el funcionamiento descrito por el manual no es mucho problema, te he dejado un ejemplo funcionando y ni siquiera te has tomado la delicadeza de tratarlo de entender, además si estás usando preg_match tu titulo está errado. Mi recomendación a nivel personal es que leas el link de mi firma que dice Haz preguntas inteligentes

Dejando a un lado ese punto, pasemos a preg_match...

Si hubieras dedicado un tiempo en ver el manual y tratarlo de entender siquiera, entenderías de que puedes usarlo de dos maneras:

Una es para determinar si hay coincidencias

Código PHP:
Ver original
  1. if (preg_match("/php/i", "PHP es el lenguaje de secuencias de comandos web preferido.")) {
  2.     echo "Se encontró una coincidencia.";
  3. } else {
  4.     echo "No se encontró ninguna coincidencia.";
  5. }

La segunda, puedes usarla para determinar si hay una coincidencia y a parte de ello obtener la coincidencia:

Código PHP:
Ver original
  1. // obtiene el nombre del host de la URL
  2. preg_match('@^(?:http://)?([^/]+)@i', "http://www.php.net/index.html", $coincidencias);
  3. $host = $coincidencias[1];

Como ves los ejemplos son claros y la documentación explicita:

Cita:
preg_match() devuelve 1 si pattern coincide con el subject dado, 0 si no, o FALSE si ocurrió un error.
Por ello te hablé del tercer parametro que como ves en el segundo ejemplo es el encargado de guardar las coincidencias.

Como diría alguien por ahí RTFM... Vamos que el manual está incluso en español...

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #21 (permalink)  
Antiguo 07/11/2013, 10:21
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

Cita:
Iniciado por jonni09lo Ver Mensaje
Tu titulo dice "pre_macth_all en intentado de todo y no logro sacarlo". Si has intentado de todo, cosa que dudo por tus respuestas, entender el funcionamiento descrito por el manual no es mucho problema, te he dejado un ejemplo funcionando y ni siquiera te has tomado la delicadeza de tratarlo de entender, además si estás usando preg_match tu titulo está errado. Mi recomendación a nivel personal es que leas el link de mi firma que dice Haz preguntas inteligentes

Dejando a un lado ese punto, pasemos a preg_match...

Si hubieras dedicado un tiempo en ver el manual y tratarlo de entender siquiera, entenderías de que puedes usarlo de dos maneras:

Una es para determinar si hay coincidencias

Código PHP:
Ver original
  1. if (preg_match("/php/i", "PHP es el lenguaje de secuencias de comandos web preferido.")) {
  2.     echo "Se encontró una coincidencia.";
  3. } else {
  4.     echo "No se encontró ninguna coincidencia.";
  5. }

La segunda, puedes usarla para determinar si hay una coincidencia y a parte de ello obtener la coincidencia:

Código PHP:
Ver original
  1. // obtiene el nombre del host de la URL
  2. preg_match('@^(?:http://)?([^/]+)@i', "http://www.php.net/index.html", $coincidencias);
  3. $host = $coincidencias[1];

Como ves los ejemplos son claros y la documentación explicita:



Por ello te hablé del tercer parametro que como ves en el segundo ejemplo es el encargado de guardar las coincidencias.

Como diría alguien por ahí RTFM... Vamos que el manual está incluso en español...

Saludos
El problema que no soy experto en php, y ustedes hablan como si uno fuera casi experto. Lo que tengo es talvez un mes en php y me tope con esto y queria implementarlo en una web que monte. Y los manuales siempre ponen ejemplo simples y yo busca una explicacion personalizada que sea entendible al 100%.

¿Usted no me la puede otorgar?
  #22 (permalink)  
Antiguo 07/11/2013, 10:25
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

Acaso el manual no es bien explicito, debes poner atencion a lo que te dicen y entender el codigo, ya que si no lo.entiensdes resulta dificil seguir explicando, es tu deber leer el manual y entenderlo y practicar
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #23 (permalink)  
Antiguo 07/11/2013, 10:42
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: error con https con file_get_contents()

Estimado, teniendo en cuenta el otro tema, le dejé prácticamente todo hecho...

Si comparas lo que se ha hecho y le haces la mejora de la expresión regular tendrías todo hecho... La idea del foro es orientar y con lo que se te ha dejado ayer y hoy mas las explicaciones dadas, con un poco de empeño y esfuerzo terminarás lo que te has prpuesto

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #24 (permalink)  
Antiguo 07/11/2013, 13:29
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

Código PHP:
Ver original
  1. <?php
  2.     $data =utf8_encode(file_get_contents("http://investigaciones.bancolombia.com/InvEconomicas/home/tickers.aspx"));
  3.     $dom= new DOMDocument;
  4.     $dom->preserveWhiteSpace=FALSE;
  5.     $dom->loadHTML($data);
  6.     $dolar=$dom->getElementById('repIndicadores__ctl1_indicadorSpan');
  7.     $dol=$dolar->nodeValue;
  8.     $dolars=explode(" ",$dol);
  9.     echo $dolars[2];
  10.     ?>
prueba ese codigi
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #25 (permalink)  
Antiguo 07/11/2013, 13:46
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

Cita:
Iniciado por SkAr88 Ver Mensaje
Código PHP:
Ver original
  1. <?php
  2.     $data =utf8_encode(file_get_contents("http://investigaciones.bancolombia.com/InvEconomicas/home/tickers.aspx"));
  3.     $dom= new DOMDocument;
  4.     $dom->preserveWhiteSpace=FALSE;
  5.     $dom->loadHTML($data);
  6.     $dolar=$dom->getElementById('repIndicadores__ctl1_indicadorSpan');
  7.     $dol=$dolar->nodeValue;
  8.     $dolars=explode(" ",$dol);
  9.     echo $dolars[2];
  10.     ?>
prueba ese codigi
De esta forma sale la url:

Código HTML:
if(preg_match('/<a href="([^"]*)"[^>]+>([^<]*)<\/a>/',$content,$matches)){
		$ti = $matches[0];
	

		}else{
			$ti = "No coinciden";
			}
pero el problema es que sale un como hipervinculo la direccion entera. Quiero que salga en texto plano sin html
  #26 (permalink)  
Antiguo 07/11/2013, 13:52
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

El indice que debes de consultar en el array es el 1 no el 0

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #27 (permalink)  
Antiguo 07/11/2013, 13:58
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

Disculpen mi anterior post, me equivoque de tema
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #28 (permalink)  
Antiguo 07/11/2013, 14:43
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

Cita:
Iniciado por jonni09lo Ver Mensaje
El indice que debes de consultar en el array es el 1 no el 0

Saludos
Cita:
Iniciado por SkAr88 Ver Mensaje
Disculpen mi anterior post, me equivoque de tema
Gracias poco a poco voy entrando en tema y aprendiendo mas, disculpen anteriormente estaba de mal humor y no podia ni leer bien y abuelo esta grave en el hospital y estoy algo mal. Pero bueno Gracias.

Tengo otra duda:

agregue este codigo que hace lo que necesito por ahora, pero cuando se inserta una url que empieze con www o sin www salta error, me puden decir como lo arreglo?

Codigo nuevo:

Código PHP:
if(preg_match('/href/i',$content,$matches2)){
        
        
preg_match('/<a[^>]*href="([^"]*)"[^>]*>.*<\/a>/',$content,$matches);
        
        
$url $matches[1];    
        
            function 
getTitle($url){
    
$str file_get_contents($url);
    if(
strlen($str)>0){
        
preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
        return 
$title[1];
    }
}
    
$ti getTitle($url);
    
        }else if(
preg_match('/^[http|https]/i',$content,$matches2)){
            
$url $content;
            function 
getTitle($content){
    
$str file_get_contents($content);
    if(
strlen($str)>0){
        
preg_match("/\<title\>(.*)\<\/title\>/i",$str,$title);
        return 
$title[1];
    }
}
    
$ti getTitle($content);
    
            } 
  #29 (permalink)  
Antiguo 07/11/2013, 14:52
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

He visto un pequeño error: (línea 16)

Cita:
preg_match('/^[http|https]/i',$content,$matches2)
sería /^(http|https)/i
  #30 (permalink)  
Antiguo 07/11/2013, 14:54
Avatar de satanson123  
Fecha de Ingreso: julio-2012
Mensajes: 217
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: pre_macth_all en intentado de todo y no logro sacarlo

Cita:
Iniciado por PHPeros Ver Mensaje
He visto un pequeño error: (línea 16)



sería /^(http|https)/i
de la forma que la tengo funciona bien solo que si tiene al inicio www o si no la tiene me lanza un error, tiene que tener obligado http o https

Etiquetas: html, https, php, todo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:28.