Hi.
Mein Provider hat nun endlich PHP5 auf seinem Server laufen.
Wollte mein Regex-Script nun umschreiben, leider krieg ich immer folgende Fehlermeldung, wenn ich das curl-Zeugs mit SimpleXML-Befehlen ersetzen will:
"Warning: simplexml_load_file(): I/O warning : failed to load external entity"
Hat wer einen Vorschlag, wie ich das ultra-komplizierte Script mit ein paar wenigen XML-Befehlen umschreiben kann?
Danke!
Hier ist das Script:
Mein Provider hat nun endlich PHP5 auf seinem Server laufen.
Wollte mein Regex-Script nun umschreiben, leider krieg ich immer folgende Fehlermeldung, wenn ich das curl-Zeugs mit SimpleXML-Befehlen ersetzen will:
"Warning: simplexml_load_file(): I/O warning : failed to load external entity"
Hat wer einen Vorschlag, wie ich das ultra-komplizierte Script mit ein paar wenigen XML-Befehlen umschreiben kann?
Danke!
Hier ist das Script:
PHP-Code:
<?php
function get_remote_file($url)
{
if (ini_get('allow_url_fopen')) {
return file_get_contents($url);
}
elseif (function_exists('curl_init')) {
$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_HEADER, 0);
$file = curl_exec($c);
curl_close($c);
return $file;
}
else {
die('Error');
}
}
include "includes/connect.php";
$getitems="SELECT itemid,asin from phpbb_amazon";
$getitems2=mysql_query($getitems) or die("Could not get items");
while($getitems3=mysql_fetch_array($getitems2))
{
$url="http://xyz.com (...) &ItemId=$getitems3[asin] (...)";
$var=get_remote_file($url);
// der Preis zwischen "<LowestNewPrice><FormattedPrice>EUR [i]Preis[/i]</FormattedPrice></LowestNewPrice>"
// soll ausgelesen werden - spielt eigentlich keine Rolle ob mit oder ohne das voranstehende "EUR".
$regexbest = '/\<LowestNewPrice\>(?:.*)<FormattedPrice\>(.*)<\/FormattedPrice\>(?:.*)<\/LowestNewPrice\>/';
preg_match($regexbest,$var,$matchbest);
if(count($matchbest) == 0){
// falls "<LowestNewPrice>" nicht vorhanden sein sollte, soll der Preis zwischen
// "<LowestUsedPrice><FormattedPrice>EUR [i]Preis[/i]</FormattedPrice></LowestUsedPrice>" ausgelesen werden
$regexbest = '/\<LowestUsedPrice\>(?:.*)<FormattedPrice\>(.*)<\/FormattedPrice\>(?:.*)<\/LowestUsedPrice\>/';
preg_match($regexbest,$var,$matchbest);
$pricebest = $matchbest[1];
}else{
$pricebest = $matchbest[1];
}
$updatecron="Update phpbb_amazon set price='$pricebest' where itemid='$getitems3[itemid]'";
mysql_query($updatecron) or die("Could not update cron");
// der Preis zwischen "<Price><FormattedPrice>EUR [i]Preis[/i]</FormattedPrice></Price>" soll ausgelesen werden
$regexamazon = '/\<Price\>(?:.*)<FormattedPrice\>(.*)<\/FormattedPrice\>(?:.*)<\/Price\>/';
preg_match($regexamazon,$var,$matchamazon);
if(count($matchamazon) == 0){
$priceamazon = "ausverkauft";
}else{
$priceamazon = $matchamazon[1];
}
$updatecron="Update phpbb_amazon set amazonprice='$priceamazon' where itemid='$getitems3[itemid]'";
mysql_query($updatecron) or die("Could not update cron");
mysql_query("Delete from bgook");
}
?>
Kommentar