Je veux mettre le contenu d'une URL dans une chaîne et le traiter. Cependant, j'ai un problème.
Je reçois cette erreur:
Warning: file_get_contents(http://www.findchips.com/avail?part=74ls244) [function.file-get-contents]: failed to open stream: Redirection limit reached,
J'ai entendu dire que cela venait de la protection de la page et des en-têtes, cookies et autres. Comment puis-je le remplacer?
J'ai également essayé des alternatives telles que fread avec fopen mais je suppose que je ne sais pas comment faire.
Quelqu'un peut-il m'aider s'il-vous-plaît?
1) méthodes locales les plus simples
<?php
echo readfile("http://example.com/"); //needs "Allow_url_include" enable
//OR
echo include("http://example.com/"); //needs "Allow_url_include" enabled
//OR
echo file_get_contents("http://example.com/");
//OR
echo stream_get_contents(fopen('http://example.com/', "rb")); //you may use "r" instead of "rb" //needs "Allow_url_fopen" enabled
?>
2) Le meilleur moyen est CURL :
echo get_remote_data('http://example.com/?myPage', 'var2=something&var3=blabla' ); // GET & POST request
Voir code de fonction ici . Il gère automatiquement [~ # ~] suivi de l'emplacement [~ # ~] problème + Les URL distantes sont automatiquement corrigées! (src="./imageblabla.png"
--------> src="http://example.com/path/imageblabla.png"
)
p.s.GNU/Linux utilisateurs pourraient avoir besoin de php5-curl
package.
Utilisez cURL
,
Vérifiez si vous l'avez via phpinfo();
Et pour le code:
function getHtml($url, $post = null) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
if(!empty($post)) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
Essayez plutôt d'utiliser cURL . cURL implémente un fichier cookie, contrairement à file_get_contents.