Handleiding voor productfeeds?

ice-T

Nieuw lid
20 feb 2008
58
0
0
www.superaffiliate.nl
#21
Bedankt voor je reactie.
In de feeds staat het nog wel goed:
bijvoorbeeld:
één
In de sql database leest ik het via phpmyadmin al uit als:
en#233;en#233;n

Het ligt dus niet aan de feed. Ik denk dat het fout gaat met toevoegen aan de database, maar weet niet precies wat ik moet veranderen om het te fixen.
 
6 sep 2006
653
0
0
#22
Ligt het niet aan het script waarmee je de feeds invoert? Je kan dit bv. testen door handmatig via phpmyadmin é in een tabel in te voeren, en te kijken of die verhaspeling dan ook plaatsvindt. Zo ja, ben ik benieuwd of het ook gebeurt als je alleen een '&' invoert.

Ik weet niet of het aan de collatie kan liggen, maar welke collatie gebruik je?

Als je de oorzaak niet op kan sporen kan je misschien de symptomen bestrijden door de feeds eerst te bewerken met html_entity_decode(), voordat je ze opslaat. Dan wordt é opgeslagen als é. Tussen het ophalen uit je database en weergeven op je site kan je de tekens weer naar de juiste entities converteren met htmlentities(). Dit maakt je site dan wel iets trager; zou het daarom alleen doen als je server-side caching gebruikt.
 

ice-T

Nieuw lid
20 feb 2008
58
0
0
www.superaffiliate.nl
#23
Het ligt inderdaad aan het invoeren. Als ik handmatig in voer dan staat het als é in de tabel en wordt het op de site juist weergegeven.
Via het script wordt de informatie aangepast, maar weet niet waarom. Gebruik nu utf8_general_ci omdat ik gelezen heb dat dit de minste problemen geeft. Eerst gebruikte ik utf8_swedish_ci maar daar werkte het ook niet goed mee. Heb al geprobeerd om in het script de juiste collation mee te geven maar dat werkte ook niet (of ik doe het verkeerd).
Site haalt resultaten steeds uit de database, dus extra vertaalslag is waarschijnlijk inderdaad niet zo slim.
 
6 sep 2006
653
0
0
#24
Misschien kan je het gedeelte van je script dat voor de invoer zorgt hier even posten. Wie weet kan ik of iemand anders dan de fout ontdekken. Of mail me het script anders even; ik zal je mijn email PM'en.
 

ice-T

Nieuw lid
20 feb 2008
58
0
0
www.superaffiliate.nl
#25
Bedankt voor het aanbod. Ik denk dat je al heel veel geholpen hebt. Het is een script wat gekocht heb en dus nog niet van binnen en van buiten ken (en waarvan ik dacht dat het wel goed zou zijn). Heb de "boosdoener" denk ik al gevonden:
Code:
	function feedschoon($string)
        {
		$string = str_replace( 
					array('*','ö','é','-','/','_',',','.','ë','ë','&'),
					array('','o','e',' ',' ',' ',' ',' ','e','e','en'),
					$string);
Op (bijvoorbeeld) de omschrijving worden alleen deze functies aangeroepen:
Code:
		$omschrijving = trim($items->description);
		$omschrijving = feedschoon($omschrijving);
Ik denk dat ik nu of de feedschoon functie aan moet passen (de & niet meer replacen, en dus alles als é enz. opslaan) of eerst een html_entity_decode() (omgezet naar speciale tekens en dan replace met standaard tekens)
 
6 sep 2006
653
0
0
#26
ice-T zei:
Ik denk dat ik nu of de feedschoon functie aan moet passen
Zo te zien is die feedschoon functie speciaal voor urls. Als ie daarvoor gebruikt wordt zou ik dat zo laten. Maar voor gewone tekst is ie niet geschikt, want hij verhaspelt wel meer tekens, zo wordt bv. elke punt een komma.

Voor gewone tekst zou ik feedschoon vervangen door htmlentities, voor het geval je een feed binnen krijgt waar speciale tekens inzitten, zoals 'é'.

Dan verander je dus dit:

$omschrijving = feedschoon($omschrijving);

in:

$omschrijving = htmlentities($omschrijving);
 
6 sep 2006
653
0
0
#27
Was toch niet zo'n goed idee van me, dat html entities, want dan wordt elke & omgezet in &, en dan werken je entities niet meer.

De oplossing is dus of om htmlentities en feedschoon helemaal weg te laten,
dus de volgende regel in je script gewoon te verwijderen (of uit te 'commenten'):

$omschrijving = feedschoon($omschrijving);

of, voor het geval er speciale tekens in de feed zitten, verander je bovenstaande regel in:

$omschrijving = htmlentities(html_entity_decode($omschrijving));

Dat laatste lijkt me de beste oplossing. Ben benieuwd of je probleem dan opgelost is.
 

ice-T

Nieuw lid
20 feb 2008
58
0
0
www.superaffiliate.nl
#28
Heb nu de aanroep van feedschoon in commentaar gezet en het werkt nu prima.
Natuurlijk wordt deze functie 100 keer aangeroepen (alle aanbieders, en alle items) maar daar kom ik wel uit.
Nogmaals bedankt voor de hulp, ik ging er vanuit dat ik zelf ik iets fout had staan op mijn server maar dat blijkt dus mee te vallen.
 
25 jan 2008
3.028
0
0
wfsidee.nl
#29
array('*','ö','é','-','/','_',',','.','ë','ë','&'),
array('','o','e',' ',' ',' ',' ',' ','e','e','en'),
dit lijkt meer op een vertaling van utf in item - title's, gewoon alle moeilijke tekens eruit en gemakkelijke erin. Wordt uitkijken of er niet meer "gemakkelijke" routines in dat script zitten. ;)

In z'n algemeenheid : waar je voor verrassingen kunt komen te staan is dubbel en halfgebakken (de-) coderingen, bijvoorbeeld je hebt voor een minteken de html entity "-"
Dan gaan we daar nog een keertje overheen met htmlspecialchars of htmlentities die de ampersand nog even in het zonnetje zet en dan krijg je dit :
"-" en dat gaat niet meer werken zoals gehoopt.
Vergt doodgewoon uitkijken en opsporen. Redelijk nieuw zijn de coderingen met blokhaken : [ b ][ / b ] ( heb hier spaties toegevoeg om ontregeling van het forum te voorkomen = bbc tags) , dat gaat een php decodering niet vinden.

Het is denk ik wel goed om te weten, dat op htmlspecialchars en htmlentities in php 5 een toevoeging is om tweemaal coderen te voorkomen. 8)
 
16 nov 2008
237
0
0
#30
In z'n algemeenheid : waar je voor verrassingen kunt komen te staan is dubbel en halfgebakken (de-) coderingen, bijvoorbeeld je hebt voor een minteken de html entity "-"
Dan gaan we daar nog een keertje overheen met htmlspecialchars of htmlentities die de ampersand nog even in het zonnetje zet en dan krijg je dit :
"-" en dat gaat niet meer werken zoals gehoopt.
Vergt doodgewoon uitkijken en opsporen. Redelijk nieuw zijn de coderingen met blokhaken : [ b ][ / b ] ( heb hier spaties toegevoeg om ontregeling van het forum te voorkomen = bbc tags) , dat gaat een php decodering niet vinden.

Het is denk ik wel goed om te weten, dat op htmlspecialchars en htmlentities in php 5 een toevoeging is om tweemaal coderen te voorkomen.
Ben ik de enige die hier geen hout van snapt? ???
 
25 jan 2008
3.028
0
0
wfsidee.nl
#31
Ben ik de enige die hier geen hout van snapt?
zou dat niet durven zeggen ;)

de lijn gaat over het opschonen van product datafeeds, wat ik eraan toevoeg is dat ofwel dezelfde persoon ofwel personen na elkaar , zich bezighouden met decoderen, waardoor nieuwe fouten kunnen ontstaan.

En dan zit een simpele affiliate later te kijken : hoe kom ik nu aan dat soort vreemde tekens op m'n pagina. Is een breed voorkomend probleem. Zozitet. 8)