2009-08-07 7 views
0
$url = 'the web address I want to get the first and second numbers close to $' ; 
$str = file_get_contents($url); 

preg_match_all('/ ([$]) *(\d+(:?.\d+)?)/', $str, $matches, PREG_SET_ORDER); 

$i=0; 
foreach ($matches as $val) { 
    if($i==0) $first=$val[2] ; 
    if($i==3) $second=$val[2] ; 
    $i++;  
} 
$bad_symbols = array(",", "."); $first = str_replace($bad_symbols, "", $first); 
$bad_symbols = array(",", "."); $second = str_replace($bad_symbols, "", $second); 

echo $first . "</br>"; 
echo $second; 

cela a fonctionné bien jusqu'à hier quel pourrait être le problème?Le code PHP raclant une URL a soudainement cessé de fonctionner

+6

Avez-vous regardé le résultat de file_get_contents ($ url)? Peut-être que le site web que vous êtes en train de gratter quelque chose. – nos

+0

Quelle est l'erreur exacte que vous obtenez? –

+0

Alors, quel est le problème? Qu'est-ce qu'il fait maintenant? – EFraim

Répondre

0

L'administrateur système a peut-être modifié la directive allow_url_fopen, ce qui signifie que vous ne pouvez pas accéder aux fichiers qui ne se trouvent pas sur votre serveur. Vérifiez ce que renvoie file_get_contents(), car vous nous avez donné très peu d'informations sur les erreurs.

Un autre problème, comme mentionné ci-dessus, pourrait être ce site distant a été changé :)

3

Je vois au moins deux explications possibles:

  • Le code HTML du site a changé; peut-être seulement un peu - mais assez pour vous causer des ennuis.
    • Vous pouvez tester la valeur de retour de preg_match_all
    • si elle est fausse, cela signifie que votre regex ne correspond - ce qui peut indiquer le contenu du HTML pageis pas le même ...
    • Ensuite, , vous pourriez avoir à modifier votre regex
  • l'administrateur du serveur (ou il peut être fait dans le code génération de la page) vous a interdit
    • peut-être que le site Web a détecté il a été mis au rebut par vous (soit parce que vous étiez trop dur sur leur serveur, ou ils ont vu leur contenu sur votre site)
    • Et ils ont interdit votre adresse IP (par exemple)
    • Pour détecter cela, essayez d'obtenir la valeur de retour de file_get_contents; si c'est faux, cela pourrait être la cause du problème.
    • Pouvez-vous essayer d'obtenir cette page HTML à partir de votre serveur, en utilisant wget en ligne de commande?
  • Un troisième, comme suggestd par d'autres: peut-être la configuration de votre serveur a changé, et vous ne pouvez pas utiliser file_get_content sur HTTP plus ...
    • Une solution serait d'utiliser curl, par exemple
    • Vérifiez dans votre configuration la directive allow_url_fopen

Si vous activez error_reporting (see also), vous pourriez aussi obtenir des informations qui pourraient s'avérer utiles ...

Questions connexes