PHP kullanarak harici bir web sayfası da dahil olmak üzere

3 Cevap php

Nasıl harici bir web sayfası eklemek için PHP kullanabilirsiniz? (Çeşit wordpress teması önizleme gibi.)

Hiçbir iFrame ve tercihen javascript - I (X) HTML KUSURSUZ uyumlu kod istiyorum.

Fikir müşteri benim kontrollü bir ortamda web sayfalarını görüntülemek için ben bir sanal yapıyorum olmasıdır. Başka şey dahil edilmeden web sayfalarını "sandbox" sarıcı "olmadan görünür olması gerektiğidir.

EDIT:

Bazı yorumculara göre, GoDaddy CURL vardır. Sorunun bir sonraki parçası olur - how do I strip out the headers and footers of the html in php so that just the contents of the body tag remain? Ben oldukça regex daha php dize işlevlerini kullanabilirsiniz.

3 Cevap

Curl kullanarak deneyin:

/**
 * Get a web file (HTML, XHTML, XML, image, etc.) from a URL.  Return an
 * array containing the HTTP server response header fields and content.
 */
function get_web_page( $url )
{
    $options = array(
        CURLOPT_RETURNTRANSFER => true,     // return web page
        CURLOPT_HEADER         => false,    // don't return headers
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        CURLOPT_USERAGENT      => "spider", // who am i
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
        CURLOPT_TIMEOUT        => 120,      // timeout on response
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
    );

    $ch      = curl_init( $url );
    curl_setopt_array( $ch, $options );
    $content = curl_exec( $ch );
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $header  = curl_getinfo( $ch );
    curl_close( $ch );

    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}

Sadece url ile olduğu gibi-bu işlevini çağırın ve php sayfanın içine bütün web sayfasını dışarı yankı gerekir.

Ancak, bu tür bazı regex kullanarak stil ve görüntüler gibi varlıkları bağlantıları, yeniden yazmak gerekebilir. ("Http://mydomain.com/image.jpg" ile "/ resim.jpg" değiştirin).

Curl genellikle paylaşılan ana yüklenir.

Sadece sayfanın vücut veya baş almak istiyorsanız, bunun için SimpleXML veya regex ifadeler kullanabilirsiniz. (Html, iyi biçimlendirilmiş ise, SimpleXML DOM geçme için harika).

Etki alanları arasında PHP'nin file_get_contents komutu çalışır, böylece dış mark-up almak mümkün olacaktır. Ancak, sadece bu göreceli değil çalışma bağlantıları yanı sıra, cross-site scripting açıkları dahil çoklu sorunları vardır çıktısı.

Eğer bir iframe kullanmak istemiyorum söylerken, etiket geçişi geçerlidir XHTML 1.0 ve sadece açıklamasına dayanarak ben uyumluluk ve güvenlik nedenleriyle öneriyoruz budur.

Ne yapabilirim bu kullanmaktır:

function __test($results){
    $pattern = '/http:\/\/.+\.(jpeg|jpg|gif)/'; //regex pattern defines the image :D
    preg_match_all($pattern, $results, $array); //responce of array

    foreach ($array[0] as $images)  //add everything as one 
    {
        $results_image = $images;
        $url = "http://saxtorinc.com/$results_image";
    }
    return $url;                                  
}

Eğer alan adı tanımlamak zorunda olacağını unutmayın