Pregunta

Escribí el Enlace clase que tiene un método shortTolong () Esto debería devolver la URL real para una URL acortada mediante la devolución de la cabecera de respuesta 'ubicación'. Lo probé y funciona bien aquí está el código

public function shortTolong()
    {
        $urlMatch = array();
        $ch = curl_init();

        $options = array
        (
            CURLOPT_URL=>$this->getUrl(),
            CURLOPT_HEADER=>true,
            CURLOPT_RETURNTRANSFER=>true,
            CURLOPT_FOLLOWLOCATION=>false,
            CURLOPT_NOBODY=>true);
        curl_setopt_array($ch, $options);
        $server_output = curl_exec($ch);
        preg_match_all(LINK, $server_output,&$urlMatch,PREG_SET_ORDER);
        if($urlMatch)
        {
            foreach($urlMatch as $set)
            {
                $extracted_url = $set[2].'://'.$set[3];
            }
            return $extracted_url;
        }
        else
        {
            return $this->getUrl();
        }
    }

El problema comienza cuando intento utilizar este método en otro archivo que utiliza feedparser para conseguir entradas de alimentación que contienen este corto URLs i Ned analizar desde alguna razón me da como resultado la URL corta en lugar del tiempo de aquí es el código:

foreach($parser->getItems() as $item)
{
    $idpreg = '/\d+/';
    preg_match_all($idpreg, $item['ID'],$statusid);
    $retweetid = ($statusid[0][1]);
    $datetime = $item['PUBLISHED'];
    $user = $item['AUTHOR']['NAME'];
    preg_match_all(LINK, $item['TITLE'], &$linkMatch);
    $final = $linkMatch[0][0];
    //if($linkMatch[0][0])
        echo '<p>';
        $link = new Link($final);
        echo $link->getUrl();
        echo '<br>';
        echo $link->shortTolong();
        echo '<br>';
        echo $user;
        echo '<br>';
        echo $retweetid;
        echo '</p>';


}

desde alguna razón me sale el mismo resultado para getUrl () y shortTolong () y sé con certeza que esto es un error.

alguna idea de por qué ocurre esto? Gracias

Editar- añadí un aviso de error al método con curl_eror me sale este mensaje de error: "No se admite el protocolo HTTP o desactivado en libcurl" Como ya he dicho probado este método y de la que está funcionando muy bien como de manera autónoma en el mismo entorno (sin cambios) Sospecho que tiene algo que ver con el uso de feedparser rizo demasiado ....

¿Fue útil?

Solución

Creo que se debe recortar () y la URL que debe resolver el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top