Goedemiddag,

Ik ben bezig met een scriptje wat bijna op zijn eind is van afronden, mede dankzij Tobias een member van phphulp.nl.

Goed,

Mijn vraag.....

OP dit moment heb ik om de boel schoon te maken voor export naar .csv bestand deze function staan.
 
<?php
public function sanitize($string){
        $string = Tools::htmlentitiesDecodeUTF8($string);
        $string = strip_tags($string);
        $string = str_replace(CHR(10).CHR(13),'',$string); // controleren verwijderen regelterugloop
        $string = preg_replace('/<br\\s*?\/??>/i','', $string);
        return $string;
}
?>


Deze roep ik aan in een andere file via:
 <?php
// $f_no[40] is de uiteindelijk geexporteerde waarde die uit de database komt welke door een tekstveld in de webshop is ingevoerd
$f_no[40] = $this->sanitize($order_detail['value']);
?>


Dit gaat op zich goed en is de output aardig schoon
Echter....de klant wil graag ivm printen van deze tekst de <br />(zoals de function ook doet) eruit hebben maar wel de zichtbare enters in het betreffende .csv veld.

Hoe kan ik dit het beste oplossen?
Nou zoals blijkt is een export naar een csv bestand aan andere voorwaarden verbonden als een export naar de printer.

twee mogelijkheden dus:

of je past de bestaande functie sanitize aan met een extra parameter waaruit blijkt waar de export naar toe gaat en zet dan een if() boven de regel "$string = preg_replace('/<br\\s*?\/??>/i','', $string);" zodat deze alleen uitgevoerd wordt wanneer er naar de csv geexporteerd wordt.

of je maakt een tweede functie sanatize_printer waarin je bovengenoemde regel weglaat. In dat geval zul je de code moeten gaan aanpassen daar waar de functie sanatize wordt aangeroepen
Hoi Frank,

Bedankt voor je input! top!

Alleen is het voor mij even belangrijk hoe ik inplaats van VOORBEELD:

|--------------------------------------------------------------------------------------------|
|tekst in veld van .csv<br /><br />volgende regel met tekst<br /> Volgende regel
|--------------------------------------------------------------------------------------------|

Dit krijg:

|--------------------------------------------------------------------------------------------|
|tekst in veld van .csv
|
|Volgende regel met tekst
|Volgende regel etc etc
|--------------------------------------------------------------------------------------------|

Wat de klant er dan zelf mee doet is hun ding...

Ik krijg het simpelweg niet voor elkaar om de newline te krijgen in het zelfde veld waar die data
met enters in is geexporteerd.

Met "$string = preg_replace('/<br\\s*?\/??>/i','', $string);"
krijg ik wel nieuwe regels maar staan die helemaal aan het begin van het .csv bestand
En daar zit 't hem in..het moet binnen het veld blijven van die geexporteerde data..

de database tabe is trouwens een VARCHAR....Zou ik dit kunnen oplossen door er een CHAR van te maken.....?
Of houdt ik dan alleen maar aaneen gesloten tekst over?
Regel 4: striptags haalt alle html tags weg uit de string.
Daarna ga je de breaks replacen, dat heeft weinig effect meer ;-)

Maar als ik het goed lees komt het in een db tabel te staan en moet het weer getoond worden via php, dus waarom zou je het er uitslopen, met strip_tags kan je ook uitzonderingen maken.
lol....

Dat is inderdaad zo...;)
Misschien moet ik de vraag dan ook anders stellen.

Wie weet wat ik moet gebruiken ter vervanging van de <br /> zodat niet de tag <br /> zichtbaar wordt in de outpu maar wel het resultaat ervan.

En....dat deze output niet door een \n of \r vervangen wordt en de hele boel buiten het veld komt.
Je brengt me in verwarring, wat wil je nu precies?
Een voorbeeld:[code]?php
$html = '<script>alert ("You've been hijacked");</script>Hello hostage,<br>Welcome, we gonna make lots of money out of you :-P)';
// 1
echo strip_tags($html);
// 2
echo strip_tags($html, '<br>');
?>
Output 1:
alert ("You've been hijacked");Hello hostage,Welcome, we gonna make lots of money out of you :-P)
Output 2:
alert ("You've been hijacked");Hello hostage,
Welcome, we gonna make lots of money out of you :-P)
Beste Ger,

Mijn vraag gaat over een onderdeel van een database export to .csv script.

in dit script wordt de data van een bepaald database tabel geexporteerd en als comma seperated value weggeschreven.

Goed,

Waar het de klant om gaat is dat in een onderdeel van de geexporteerde data tekst staat
waarin <br /> voorkomen (komt ergens vanuit een tekstveld in de webshop vandaan), deze html is goed maar de klant kan deze niet verwerken o.i.d.

Dus heeft mij gevraagd om te kijken of het mogelijk is om de breaks te vervangen voor zichtbare enters zonder de html erbij.

Maar ik denk dat ik de vraag al heb beantwoordt, volgens mij lukt dat helemaal niet in een comma seperated value bestand.

Kijk, ik zal een image als voorbeeld geven:



Wat in het bovenste veld staat is zoals de klant et wil hebben.
Maar hij elf stuurt mij al een .xls inplaats van een .csv bestand.
Doe dan gewoon:

<?php
public function sanitize($string){
        $string = Tools::htmlentitiesDecodeUTF8($string);
        $string = strip_tags($string, '<br>');
        $string = str_replace(CHR(10).CHR(13),'',$string); // controleren verwijderen regelterugloop
        $string = preg_replace('/<br\\s*?\/??>/i',"\n", $string);
        return $string;
}
?>
Hoi Koen,

Bedankt voor je reactie...
Ik heb het getest en ook dat werkt niet.

Het probleem is dat de geexporteerde data dan een regel eronder naar de eerste kolom wordt gezet.
En dat is waar ik tegenaan loop.
Het moet binnen hetzelfde kolom blijven in het betreffende veld.

Volgens mij krijg je dit sneller voor elkaar als de export een .xls bestand betreft.
Maarrrr....dat doet het script niet.

ik zit even te piekeren over wat jij probeert te bereiken endy..

Hoe ga jij straks printen? vanuit de browser? vanuit een tekstbestand? vanuit een PDF?

Ik hoef niets te printen beste heer...
De klant wil de data zo in het .csv bestand angeleverd krijgen.

Als je even met me meekijkt op de printscreen die ik heb gemaakt dan zie je wat de klant wel en niet wil.




Wat de klant wil de wat er op de eerste rij gebeurt.
wat de klant niet wil is wat er op de tweede regel gebeurt.....met <br /> er tussendoor.

D

Reageren