Avatar billede dennism Nybegynder
13. september 2007 - 22:34 Der er 12 kommentarer og
1 løsning

PHP: parse_ini

Jeg er igang med at lave et system, hvor jeg gemmer en masse data i en ini-fil. Nogle værdier og nogle beskeder. En sådan besked kan indeholde alle tegn, dvs. ", ', ; osv.

Teksten bliver skrevet i et textarea og gemt på denne måde i ini-filen:
$iniText='[text]
booking = "'.nl2br($_POST['textBooking']).'";

Hvis jeg f.eks. i mit textarea skriver:
Hej med "dig;"
og får det indsat, står der i ini-filen:
booking = "Hej med \"dig;\""
og når jeg så indsætter denne i mit textarea står der:
Hej med \dig

Håber der er nogen der kan hjælpe mig med dette?
Avatar billede hmm10 Nybegynder
13. september 2007 - 23:07 #1
Kan du benytte htmlentities/html_entity_decode ?
Avatar billede dennism Nybegynder
13. september 2007 - 23:21 #2
Jeg fandt denne lille funktion også:
function br2nl($text) {
    return  preg_replace('/<br\\\\s*?\\/??>/i', "\\n", $text);
}

Når jeg indsætter til ini-filen gør jeg:
htmlentities(nl2br($_POST['textBookingMail']))

Og når jeg henter det ind i textarea gør jeg:
html_entity_decode(br2nl($settings['text']['bookingMail']))

Jeg skriver nu:
Hej med "dig;"
Det giver i ini:
booking = "Hej med \&quot;dig;\&quot;"
og når jeg ser det i textarea får jeg:
Hej med \"dig;\"

Det fungerer altså ikke helt :(
Avatar billede hmm10 Nybegynder
13. september 2007 - 23:25 #3
.. og uden nl2br ?
Avatar billede hmm10 Nybegynder
13. september 2007 - 23:30 #4
.. Hvis du evt. vil gemme dine linjeskift i filen kan du lave dem til et tag (fx. "/br/" ect.) i din fil og derefter sætte dem korrekt tilbage?
Avatar billede showsource Seniormester
14. september 2007 - 05:57 #5
Du skal blot bruge stripslashes($_POST["tekst"]) når du skriver til filen.
Avatar billede dennism Nybegynder
14. september 2007 - 09:30 #6
Jeg gemmer nu med denne:
stripslashes(nl2br($_POST['textBookingMail']))
Og læser med:
br2nl($settings['text']['bookingMail'])

Når jeg skriver:
Hej med "dig;"
står der i ini:
bookingMail = "Hej med "dig;""
og i textarea står der:
Hej med dig

Der er altså stadig noget galt :(
Avatar billede dennism Nybegynder
14. september 2007 - 12:31 #7
Jeg har nu prøvet en anden taktik:

Når jeg indsætter i ini bruger jeg addslashes og når jeg henter bruger jeg stripslashes.

Jeg skriver:
Her er "noget tekst"; tak
I ini bliver det:
Her er \\\"noget tekst\\\"; tak
og når jeg henter igen bliver det:
Her er \noget tekst\; tak
Avatar billede dennism Nybegynder
14. september 2007 - 12:55 #8
Mit PHP laver automatisk addslashes, derfor det så lidt mærkeligt ud. Det eneste jeg gør nu, er at lave en stripslashes når jeg viser teksten i textarea.

Jeg skriver:
"hej";"hej igen"
I ini:
booking = "\"hej\";\"hej igen\""
når jeg læser i textarea som har lavet en stripslashes:
hej;hej igen

Jeg kan ikke forstå, hvorfor stripslashes ikke får lavet \" om til ". Den fjerner dem bare :(
Avatar billede dennism Nybegynder
14. september 2007 - 14:37 #9
Jeg har lavet et nyt spørgsmål, med en anden formularing af problemet:
http://www.eksperten.dk/spm/796397

I må meget gerne smide et svar her, så vi kan lukke. I er meget velkommen til at deltage i det nye spørgsmål.
Avatar billede hmm10 Nybegynder
14. september 2007 - 15:09 #10
.. Samme spørgsmål?

jeg skal ikke have noget for dette ;)
Avatar billede dennism Nybegynder
16. september 2007 - 15:39 #11
Er der ingen der vil have point med herfra?
Avatar billede showsource Seniormester
16. september 2007 - 16:15 #12
Ingen point, ellers tak.

( Og hvorfor fa'n lagde jeg ikke mærke til "parse ini" :O(
Avatar billede dennism Nybegynder
16. september 2007 - 18:14 #13
.lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester