Hi,
ich habe einen array mit Namen den ich mit einer Liste die mehre Seiten besitzt vergleiche. Den Match gibt es mir jedoch lediglich bei einer obwohl alle daten vorliegen.
wenn der gesuchte Wert nicht gefunden wurde rufe ich die Methode pageFlipTest auf welche dann die neue api url zurückgibt mit dem page offset.
mir ist es einfach nicht ersichtlich, weshalb es nur bei einem Datensatz zuschlägt wo alle anderen 30 auch vorhanden sind.
ich habe einen array mit Namen den ich mit einer Liste die mehre Seiten besitzt vergleiche. Den Match gibt es mir jedoch lediglich bei einer obwohl alle daten vorliegen.
PHP:
function getCraftedEnchantID($item_name,$url='')
{
$itemName='';
$id='';
$items = array();
$arrTmp;
echo "<pre>##Name++Line 456### ".print_r($item_name,true)."</pre>";
for($i=0;$i<count($item_name);$i++)
{
if(isset($itemName))
{
if($this->is_multi($item_name))
{
$name_search = $item_name[$i][1];
echo "<pre>##Name++Line 465### ".print_r($name_search,true)."</pre>";
} else {
$name_search = $item_name[0];
echo "<pre>##Name++Line 468### ".print_r($name_search,true)."</pre>";
}
}
else{
$name_search = $item_name;
}
echo "<pre>##Name++Line 474### ".print_r($name_search,true)."</pre>";
$getUrl = $this->apiURL->getUrl('searchItemByName',$name_search,$this->token);
$content = $this->tools->jsonDecode($getUrl,$this->token);
$content_i = json_decode($content,true);
if(isset($content_i['results'][0]['data']['name']['en_US']) && $this->tools->stripEnchantFromItemName($content_i['results'][0]['data']['name']['en_US'])==$name_search)
{
echo "<pre>".$content_i['results'][0]['data']['name']['en_US']."</pre>";
echo "<pre>##Datensatz gefunden++Line 481### ".print_r($name_search,true)."</pre>";
}else{
echo "<pre>##Name++Line 484### ".print_r($name_search,true)."</pre>";
# echo "<pre>url vor ifs ".print_r($url,true)."</pre>";
if(isset($url) && !empty($url))
{
//rebuild name
// $re = '~&name.en_US=(.*?)&_page~m';
// $nRebuild = $url[0];
// preg_match($re, $nRebuild, $nRebuildArr);
// echo "<pre> rebuildArr".print_r($nRebuildArr,true)."</pre>";
// $rebuildName = str_replace('&%20', ' ', $nRebuildArr[1]);
echo "<pre>##Name++Line 494### ".print_r($name_search,true)."</pre>";
$getUrl_ = $this->apiURL->getUrl('searchItemByName',array($name_search,$url[0]),$this->token);
}else{
echo "juhu bin in get url ohne das es ein array ist gelandet \n";
echo "<pre>URL :: ".print_r($url,true)."</pre>";
echo "<pre>##Name++Line 500### ".print_r($name_search,true)."</pre>";
$getUrl_ = $this->apiURL->getUrl('searchItemByName',$name_search,$this->token);
}
# $getUrl = $this->apiURL->getUrl('searchItemByName',$item_name[$i],$this->token);
$contentR = $this->tools->jsonDecode($getUrl_,$this->token);
# echo "foreach aus else start{$i} <pre>".print_r($getUrl,true)."</pre>";
$content_R = json_decode($contentR,true);
echo "<pre>##Name++Line 507### ".print_r($name_search,true)."</pre>";
$this->pageFlipTest($content_R, $name_search, $getUrl_);
}
}
return $items;
}
wenn der gesuchte Wert nicht gefunden wurde rufe ich die Methode pageFlipTest auf welche dann die neue api url zurückgibt mit dem page offset.
PHP:
function pageFlipTest($inhalt,$suche,$url)
{
echo "<pre>##Name++Line 297### ".print_r($suche,true)."</pre>";
$tt;
$re = '/_page=\d+/m';
if (is_array($url)) {
$str = $url[0];
preg_match($re, $str, $matches); //get current page number spot str.
$currPage = explode('=', $matches[0]); //extracts the current page number from url
echo "<pre>##Name++Line 304### ".print_r($name_search,true)."</pre>";
} else {
$re = '/_page=\d+/m';
echo "<br/> url copyx." . $url . "\n";
echo "<pre>##Name++Line 308### ".print_r($suche,true)."</pre>";
}
if (is_array($inhalt)) {
$reTP = '/_page=\d+/m';
preg_match($re, $url, $matchesTP);
$currPage = explode('=', $matchesTP[0]);
echo "<pre> curr page lautet " . print_r($currPage, true) . "</pre>";
echo "<pre>##Name++Line 315### ".print_r($suche,true)."</pre>";
if ($inhalt['pageCount'] === 1) {
echo "<pre>##Name++Line 317### ".print_r($suche,true)."</pre>";
} elseif ($inhalt['pageCount'] >= 1 && $currPage[1] <= $inhalt['pageCount']) {
echo "<pre>else if anfang von page count > current page, da " . $inhalt['pageCount'] . " >= " . $currPage[1] . " ist</pre>";
echo "<pre>##Name++Line 320### ".print_r($suche,true)."</pre>";
$nextPage = $currPage[1] + 1; //addition calc 0+currentPage+1 to get the next page
$re = '/_page=\d+/m';
$str = $url;
echo "<pre> url ohne änderungen" . print_r($url, true) . "</pre>";
preg_match($re, $str, $matches); //get current page number spot str.
//extracts the current page number from url
$nextPage = ($currPage[1]) + 1; //addition calc 0+currentPage+1 to get the next page
$regEX = '~((https?|ftp)://)?([a-z0-9\-\.]*)\.'
. '(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.'
. '([0-9]{1,3})))(/([a-z0-9+$_%-]\.?)+)*/?'
. '(\?[a-z+&\$_.-][a-z0-9;:@&%=+/$_.-]*)?'
. '([A-z0-9+$_.&%-]*)(([=A-Za-z*)?('
. '[A-Za-z&%0-9]*\s.[A-Za-z]*)|'
. '([=A-Za-z*)?([A-Za-z&%0-9]*[A-Za-z]*))?'
. '([A-Za-z=_&]*)?(([0-9]{1,5}))~m';
echo "<pre>##Name++Line 479### ".print_r($suche,true)."</pre>";
preg_match($regEX, $url, $nU);
$nURL = $nU;
echo "<pre> next Page:: " . print_r($nextPage, true) . "</pre>";
echo "<pre> nUrl Page:: " . print_r($nURL, true) . "</pre>";
$t = preg_replace('/=\d+/m', '=' . $nextPage, $nURL);
$tt = $t;
preg_match('/&access_token=.+\S/m', $url, $res);
$expl = explode('=', $res[0]);
echo "<pre>##Name++Line 345### ".print_r($suche,true)."</pre>";
$this->getCraftedEnchantID(array($suche), array($tt[0], $expl[1]));
} else {
echo "<pre>Page count > current page, da " . $inhalt['pageCount'] . " >= " . $currPage[1] . " ist</pre>";
echo "<pre>##Name++Line 350### ".print_r($suche,true)."</pre>";
}
} else {
echo "<pre>Beim Inhalt handelt es sich um keinen Array " . print_r($inhalt, true) . "</pre>";
echo "<pre>##Name++Line 354### ".print_r($suche,true)."</pre>";
}
}
Zuletzt bearbeitet: