Hallo allemaal,

Ik krijg een xml bestand aangeleverd die ik verwerk en in een db zet. Nu is het probleem dat de encoding niet goed te krijgen is en het vervangen van de \n niet werkt. Ik heb ookal rondgezocht op dit forum, en geen van de opties werken.

Newline vervangen:

Dit is de code die ik gebruik:

$var = str_replace("\n", "<br />", $var);


Als ik dit toepas op tekst die ik uit de db haal, gebeurt er niks mee. Wat doe ik fout? Het werkt wel als ik dezelfde tekst zo probeer:


$var = "de opgehaalde\ntekst uit de db";
$var = str_replace("\n", "<br />", $var);


Maar op de tekst die uit de db gehaald wordt, werkt niks. :S

Encoding:

De db staat op latin1_swedish_ci het html bestand bevat:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head><title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">


Ook de tekst in het xml bestand is in ISO-8859-1 opgesteld.
Ondanks dit blijft hij toch de rare tekens weergeven. :S

Ik hoop dat iemand mij kan helpen met 1 of allebij de problemen.

Alvast bedankt voor jullie tijd en moeite.

Groeten,
Rico
Probeer eens:

<?php
$var = nl2br($var);
?>
Bas Matthee schreef op 04.04.2008 11:08
Probeer eens:

<?php
$var = nl2br($var);
?>


Ookal geprobeert, werkt ook niet.

Zou het probleem komen doordat de gegevens uit een xml bestand naar de db is gegaan? Maar ik heb het ook getest om het goed in de db te zetten ook weer zonder effect.

Ik hoop dat iemand ziet wat ik nu fout doe, want ik snap er niks meer van waarom het niet werkt.
Eerst raad ik je aan om in elk document het zelfde karakterset te gebruiken, dit ivm met rare conversie fouten wat nog wel eens wil voorkomen.

Verder, kun je ons voorbeelden geven van de orginele karakters die als output helemaal iets anders zijn?
@Riemer: Elk bestand heeft dezelfde encoding ook de db heeft dezelfde encoding als de bestanden. Alles staat op ISO-8859-1. Het aangeleverde xml bestand heeft geen encoding in de 1ste regel <?xml version="1.0"?> helaas. Maar hier kan ik dus helaas niks aan veranderen.

De input is hetzelfde als de output. Als er in het xml bestand "dit is\neen regel met rare °C tekens" staat dan wordt deze ook zo in de db gezet, en wordt deze ook zo opgehaald uit de db. Ik heb al geprobeert om het al voordat het de db ingaat te corrigeren, maar dat lukt ook niet. Onder de rare tekens die ISO-8859-1 zou moeten opvangen vallen gr/m² , geïnstalleerd , kopieën.

Het lijkt erop dat de fout tijdens de verwerking van het xml bestand zou zijn, maar heb daar ookal alles wat ik vond geprobeert, en nergens kreeg ik het juiste resultaat.

Ik hoop dat ik het een beetje duidelijk heb kunnen maken hoe de verwerking is. Ik hoop echt dat iemand mij kan zeggen wat ik fout doe, ik snap er iig niks meer van.
Weet je wel zeker dat er \n in staat.
<?php
$var = str_replace("\r\n", "<br />", $var);
?>
Werkt dit ?
@Miky: Als alléén \n het niet doet zal \r\n het dus zeker niet doen.
Een wilde gok, probeer in de HTML bestand de karakterset te zetten naar UTF-8.
SanThe schreef op 04.04.2008 16:38
Weet je wel zeker dat er \n in staat.


Lijkt me moeilijk om me daarin te vergissen.. :D \n is newline en die staat vast tussen 2 woorden in.. Dus ja dat weet ik zeker.
@Miky: Ook al geprobeert en werkt niet.

@Riemer: Ook al geprobeert en lost niks op helaas.

Reageren