2010-08-26 5 views
0

Je crée un site pour une université où nous devons inclure la navigation principale de l'université en haut de la page. Plutôt que de recréer leur navigation, je veux le charger dynamiquement.charger une partie d'un site externe en utilisant curl?

D'abord, j'ai pensé que je pourrais utiliser un iframe et juste l'ajuster à la navigation. Cependant, quand un lien est cliqué, il s'ouvre dans ce cadre, quand je le veux dans une nouvelle fenêtre. Donc, mon nouveau plan est de tirer dans le nav avec curl (ou d'une autre manière si quelqu'un a une suggestion ..). Quel est le meilleur moyen d'y parvenir? Assez nouveau au curl donc j'adorerais du code.

Merci!

Répondre

0

Si vous souhaitez le récupérer à l'aide de cURL, vous pouvez utiliser cet exemple sur le site Web de cURL: http://curl.haxx.se/libcurl/php/examples/simpleget.html.

Sinon, vous pouvez utiliser la fonction de PHP readfile pour lire un fichier (local ou externe) directement dans la page ou la fonction file_get_contents pour le charger dans une variable (vous pouvez le manipuler avant la sortie à la page).

+0

Désolé je devrais dire que je n'ai pas accès au code sur ce serveur, je devrais le dépouiller du site html. – wesbos

+0

OK, vous pouvez alors utiliser la fonction [readfile] (http://php.net/manual/en/function.readfile.php) pour lire un fichier distant dans la page. Ce sera plus simple et peut-être même plus rapide que cURL. En outre, vous pouvez utiliser la fonction [file_get_contents] (http://php.net/manual/fr/function.file-get-contents.php) pour lire l'URL dans une variable au lieu de la publier directement sur la page. – jhartz

+0

Réponse mise à jour. – jhartz

0

J'ai récemment fait ce piratage sur le site existant d'un client.

Créez une "vue de mise en page" dans le site de l'université qui contient l'en-tête et la navigation que vous voulez. Rendre le corps vide, sauf pour un drapeau qui dira à votre script de l'analyseur où insérer le contenu.

<div class="nav"> 
    <!-- ... --> 
</div> 
<div class="body"> 
    <!-- Below is the flag --> 
    {content} 
</div> 

Utilisez le code suivant pour importer la mise en page HTML, insérez le code HTML de la page en elle, puis le sortir

// Variables 
$contentForLayout = '<p>This is the page content</p>' 
$pageTitle = 'Test Page'; 
$layoutUrl = 'http://'.$_SERVER['HTTP_HOST'].'/unilayout'; // AFAIK, cURL like the host to be there 

// Get layout HTML 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $layoutUrl); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
ob_start(); 
curl_exec($ch); 
curl_close($ch); 
$layoutHtml = ob_get_contents(); 
ob_end_clean(); 

// Insert your page HTML into the layout HTML 
$layoutHtml = str_replace('{content}', $contentForLayout, $layoutHtml); 

// Insert your page title into the layout HTML 
$layoutHtml = preg_replace('%<title>[^<]*</title>%si', '<title>'.h($pageTitle).'</title>', $layoutHtml); 

// Output 
print $layoutHtml; 
0

Vous pouvez essayer d'utiliser cette bibliothèque http://github.com/shuber/curl et analyser la navigation de la réponse boucle corps utilisant regex ou un analyseur html

Questions connexes