|
Verschillende feeds gebruiken verschillende schrijfwijzen voor items 'Belgie' versus 'België' en 'LCD TV' versus 'LCD Televisie'. Het eerste probleem ( e versus ë) wordt in principe door de zogeheten collation van de database opgelost, maar het is toch netter het gelijk te trekken anders is er kans dat Belgie in plaats van België in de menu's komt. Andere problemen kunnen worden opgelost via een callback functie. Een voorbeeld voor het aanpassen van landen:
<? #Opletten bestand moet in ISO-8859-1 niet UTF-8 global $country2country; # lang verhaal kort : ja dit is nodig $country2country=array( 'Italie' => 'Italië', 'Tsjechische Republiek' => 'Tsjechië', 'Duitsland Polen' =>'Duitsland,Polen', 'Andalusie' =>'Andalusië', 'Vae' =>'Verenigde Arabische Emiraten', 'Emiraten' =>'Verenigde Arabische Emiraten', 'Australie' =>'Australië', 'Ethiopie' =>'Ethiopië', 'Namibi' =>'Namibië', 'Namibie' =>'Namibië', 'Itali' =>'Italië', 'Uganda' =>'Oeganda', 'Birma' =>'Myanmar', 'Belgi' =>'België', 'Belg' =>'België', 'Belgie' =>'België', 'Belgium' =>'België', 'Madagascar' => 'Madagaskar', 'Trinidad' => 'Trinidad en Tobago', 'Dubai & Emiraten' => 'Dubai', 'Groot brittanië' => 'Groot Brittannië', 'Dominicaanse Republ' => 'Dominicaanse Republiek',
);
function country2country($land) { global $country2country; $land=preg_replace("/^[^a-zA-Z]*/","",$land); # pas op met php 4. Hier mb_strtolower enzo gebruiken $land=ucwords(strtolower(str_replace(array('-','.'),array(' ',''), $land))); $a=split(",",$land); foreach ($a as $land ) { $l=trim($land); $m=$country2country[trim($l)]; $b[]=$m?$m:$l; } $c= join(",",$b); return $c; }
function voorbeeld_cb (&$item) { generic_cb ($item); $item['menu_1']=country2country($item['menu_1']); }
Probleem bij bovengenoemde methode is dat de namen exact moeten matchen. Een alternatief is via regex:
<? function kleding (&$item) { $rename=array( 'Accesso.*' => 'Accessoires', 'BH'=>'Behas', 'kids'=>'Kinderen', 'Youth'=>'Kinderen', 'Women'=>'Dames', 'Men'=>'Heren', 'kinderkleding'=>'Kinderen', 'ondergoed'=>'Lingerie', 'T shirt'=>'T shirts',
);
foreach ($rename as $k => $v) { $item['menu_1']=preg_replace("/$k/i",$v,$item['menu_1']); $item['menu_2']=preg_replace("/$k/i",$v,$item['menu_2']); } }
# onderstaande code staat al in de voorbeeld feeds.php /* function kleding_cb(&$item) { generic_cb($item); kleding($item); } */
|