/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Q: Replace af backslash ('\'-tegn) i stren~
Fra : Sports-MC / Claus Be~


Dato : 12-01-02 08:25

Hej,

Jeg har en applikation der gemmer indtastet tekst i en fil (med fopen,
fwrite, fclose) men når teksten indeholder gnyf og dobbeltgnyf (' og ")
smider php en backslash foran tegnet når det gemmes... (det sker uanset
om jeg vælger binary safe mode ved fopen).

Det er sådan set OK med mig, men når jeg skal fremvise teksten igen har
jeg problemer med at få fjernet backslash'en - og det ser unægtelig lidt
fjollet ud!

Jeg har forsøgt på alle mulige måder men PHP (preg_replace) opfatter
tilsyneladende ikke lige backslash som et tegn man skal have lov at
udskifte - så hvis nogen af jer sidder med et guldkorn der kan løse
problemet for mig vil jeg blive meget taknemmelig!

Venlig hilsen,
Claus



 
 
Jonas Koch Bentzen (12-01-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 12-01-02 09:01

Sports-MC / Claus Bernth skrev:
>
> når teksten indeholder gnyf og dobbeltgnyf (' og
> ") smider php en backslash foran tegnet når det gemmes...

Ah ja... Vores allesammens irriterende ven magic_quotes har slået til
igen. Se
<http://dk.php.net/manual/en/configuration.php#ini.magic-quotes-gpc>

Du kan slå magic_quotes fra i php.ini, eller - hvis du ikke har adgang
til php.ini - i .htaccess:

php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off
php_flag magic_quotes_sybase off

--
Jonas Koch Bentzen

http://understroem.dk/

Jette (12-01-2002)
Kommentar
Fra : Jette


Dato : 12-01-02 11:42

"Sports-MC / Claus Bernth" skrev:
> Hej,
>
> Jeg har en applikation der gemmer indtastet tekst i en fil (med fopen,
> fwrite, fclose) men når teksten indeholder gnyf og dobbeltgnyf (' og ")
> smider php en backslash foran tegnet når det gemmes... (det sker uanset
> om jeg vælger binary safe mode ved fopen).
[klip]

Hej Claus

Jeg havde samme problem og skrev spørgsmålet på http://www.eksperten.dk.
De advarer imod at slå magic_quotes fra og gav mig istedet denne løsning:

$array = file("sti/til/fil.txt");
$streng = join('', $array);
echo stripslashes($streng);

Disse tre linier åbner filen og skriver indholdet uden backslashes.

Mvh. Jette



Niels Andersen (12-01-2002)
Kommentar
Fra : Niels Andersen


Dato : 12-01-02 12:39

"Jette" <jette-nielsen@get2net.dk> wrote in message
news:a1p41g$2bm4$1@news.cybercity.dk...
> Jeg havde samme problem og skrev spørgsmålet på http://www.eksperten.dk.
> De advarer imod at slå magic_quotes fra og gav mig istedet denne løsning:

Eksperten er fyldt med newbies, der tror de er eksperter.
Det er helt fint at være newbie, og det er også fint at newbies hjælper
andre newbies, hvis der lige er et punkt de ved noget om. Problemet er, at
alt for mange kender ikke sit niveau.
Fx. her har en eller anden fundet en ting som virker. Helt uden at spekulere
på hvor hulens upraktisk og fjollet det er, råder de andre til at gøre det
samme.
Dem, der læser det, har ingen ide om det er en newbie eller ekspert de har
fået rådet af, og har ingen mulighed for at vurdere værdien af rådet.

Man kan godt argumentere for at magic_quotes er en god ting for begyndere,
det er derfor det er slået til automatisk.
Men det er altså kun i forbindelse med databaser. Hvis der slet ikke bruges
database (fx. mysql) er der overhovedet ingen fordele, men alle ulemperne.

> $array = file("sti/til/fil.txt");
> $streng = join('', $array);
> echo stripslashes($streng);

Der er slet ingen grund til at gemme backslashes i filen. De backslashes
skal slet ikke være der, når du ikke bruger database. Hvis du ikke slår
magic_quotes fra, så de aldrig kommer, så skal de fjernes så snart de er
kommet, dvs. når du får data fra browseren, inden du overhovedet gemmer det
i filen.

--
Mvh.

Niels Andersen



Jette (12-01-2002)
Kommentar
Fra : Jette


Dato : 12-01-02 16:44

"Niels Andersen" skrev:
> Eksperten er fyldt med newbies, der tror de er eksperter.
> Det er helt fint at være newbie, og det er også fint at newbies hjælper
> andre newbies, hvis der lige er et punkt de ved noget om. Problemet er, at
> alt for mange kender ikke sit niveau.

Well, uanset hvad har jeg altid fået god/hurtig hjælp på eksperten.

> Fx. her har en eller anden fundet en ting som virker. Helt uden at
spekulere
> på hvor hulens upraktisk og fjollet det er, råder de andre til at gøre det
> samme.

Er mit råd upraktisk og fjollet?... hvis ja, hvad bør man gøre i stedet for?

> Dem, der læser det, har ingen ide om det er en newbie eller ekspert de har
> fået rådet af, og har ingen mulighed for at vurdere værdien af rådet.

Næh.... det har du ret i, men det er da samme vilkår i NG'en. Jeg kan f.eks.
ikke vide om du er ekspert.

> Man kan godt argumentere for at magic_quotes er en god ting for begyndere,
> det er derfor det er slået til automatisk.
> Men det er altså kun i forbindelse med databaser. Hvis der slet ikke
bruges
> database (fx. mysql) er der overhovedet ingen fordele, men alle ulemperne.

Jeg bruger mysql i vid udstrækning, så derfor foretrækker jeg min "fjollede"
måde at gøre det på.... og hvem siger at Claus ikke bruger databaser?

Mvh. Jette



Niels Andersen (12-01-2002)
Kommentar
Fra : Niels Andersen


Dato : 12-01-02 18:08

"Jette" <jette-nielsen@get2net.dk> wrote in message
news:a1pln8$9so$1@news.cybercity.dk...
> Well, uanset hvad har jeg altid fået god/hurtig hjælp på eksperten.

Jamen der er skam også meget hjælp at hente på Eksperten, og det kan gå ret
så hurtigt.
Men stadig... Man får mange råd, som kun ser gode ud, fordi man ikke ved
bedre.

> Er mit råd upraktisk og fjollet?... hvis ja, hvad bør man gøre i stedet
for?

Som beskrevet længere nede:
"Hvis du ikke slår magic_quotes fra, så de aldrig kommer, så skal de fjernes
så snart de er kommet, dvs. når du får data fra browseren, inden du
overhovedet gemmer det i filen."

> > Dem, der læser det, har ingen ide om det er en newbie eller ekspert de
har
> > fået rådet af, og har ingen mulighed for at vurdere værdien af rådet.
> Næh.... det har du ret i, men det er da samme vilkår i NG'en. Jeg kan
f.eks.
> ikke vide om du er ekspert.

Ja, det har du ret i. Jeg har bare ikke oplevet fænomenet her. Sikkert fordi
forholdet mellem begyndere og erfarne er helt anderledes her.

> Jeg bruger mysql i vid udstrækning, så derfor foretrækker jeg min
"fjollede"
> måde at gøre det på....

Jamen hvis du har lyst til at bruge magic_quotes, så gør det da endelig.
Men jeg synes altså du skal fjerne de backslashes så snart de bliver
overflødige, og ikke i sidste øjeblik.

> og hvem siger at Claus ikke bruger databaser?

Det tror jeg ikke nogen har sagt noget om. Men siden der bliver gemt i en
fil, er det usandsynligt. Det er vist kun i meget sjældne tilfælle det giver
mening at gemme i en fil, når man har database til rådighed.

--
Mvh.

Niels Andersen



Jette (12-01-2002)
Kommentar
Fra : Jette


Dato : 12-01-02 20:55

"Niels Andersen" skrev:
> Som beskrevet længere nede:
> "Hvis du ikke slår magic_quotes fra, så de aldrig kommer, så skal de
fjernes
> så snart de er kommet, dvs. når du får data fra browseren, inden du
> overhovedet gemmer det i filen."
[klip]
> Jamen hvis du har lyst til at bruge magic_quotes, så gør det da endelig.
> Men jeg synes altså du skal fjerne de backslashes så snart de bliver
> overflødige, og ikke i sidste øjeblik.

Jeg forsøgte også til at starte med at fjerne backslashes inden jeg skrev
til filen, men fandt ud af, at det kan man ikke ... og da jeg ikke ville slå
magic_quotes fra, er jeg vel nød til at fjerne dem når jeg indlæser filen?

[klip]
> Men siden der bliver gemt i en
> fil, er det usandsynligt. Det er vist kun i meget sjældne tilfælle det
giver
> mening at gemme i en fil, når man har database til rådighed.

Hvad hvis det drejer sig om lange artikler? Grunden til jeg gemmer i filer
er at jeg (i alt min begynder-naivitet) tror det tager længere tid at
indlæse al den tekst fra en database i forhold til at åbne en fil. Jeg
skriver stien til filen og overskriften i databasen, og så gemmer jeg ellers
indholdet af artiklen i en fil..... men dér har jeg måske fuldstændig
misforstået noget? :-}

Kan et "text"-felt i SQL indeholde uanede mængder af tekst?

Mhv. Jette




Niels Andersen (13-01-2002)
Kommentar
Fra : Niels Andersen


Dato : 13-01-02 00:09

"Jette" <jette-nielsen@get2net.dk> wrote in message
news:a1q4ed$17tb$1@news.cybercity.dk...
> > Men jeg synes altså du skal fjerne de backslashes så snart de bliver
> > overflødige, og ikke i sidste øjeblik.
>
> Jeg forsøgte også til at starte med at fjerne backslashes inden jeg skrev
> til filen, men fandt ud af, at det kan man ikke ... og da jeg ikke ville
slå
> magic_quotes fra, er jeg vel nød til at fjerne dem når jeg indlæser filen?

Det kan man nu sagtens.

> > Det er vist kun i meget sjældne tilfælle det giver
> > mening at gemme i en fil, når man har database til rådighed.
> Hvad hvis det drejer sig om lange artikler?

Hvis det er flere megabytes, så ville jeg nok putte det i filer.
Men på den anden side, så lange tekster smider man vel ikke bare i en
html-side. :)

> Grunden til jeg gemmer i filer
> er at jeg (i alt min begynder-naivitet) tror det tager længere tid at
> indlæse al den tekst fra en database i forhold til at åbne en fil.

Det ved jeg faktisk ikke. Men jeg ved, at hvis det tager længere tid via
databasen, så er forskellen ubetydelig. Ved et stort antal artikler kan jeg
forestille mig at databasen vil være hurtigst.

Det interessante er alle de muligheder databasen giver. Fx. vil det kun tage
få minutter at udvikle en funktion, der kan søge efter noget tekst i alle
artiklerne. Alt det besværlige er nemlig allerede lavet.
Sådan en fritekst-søgning jeg kan lave på minutter til MySQL, ville tage mig
dage at lave til filer. Og selv da, vil db-søgningen være væsentlig bedre.

> Kan et "text"-felt i SQL indeholde uanede mængder af tekst?

http://www.mysql.com/doc/C/o/Column_types.html

"TEXT" kan indeholde op til 65.535.
"MEDIUMTEXT" op til 16.777.215 tegn.
"LONGTEXT" op til 4.294.967.295 tegn. I praksis kan du dog ikke hive mere
end 16 mb ud af én række (som bemærket på samme side). Hvis det er et
problem, så er det med filerne en god ide.

--
Mvh.

Niels Andersen



Jette (13-01-2002)
Kommentar
Fra : Jette


Dato : 13-01-02 01:44


"Niels Andersen" skrev:
[klip]
> Hvis det er flere megabytes, så ville jeg nok putte det i filer.
> Men på den anden side, så lange tekster smider man vel ikke bare i en
> html-side. :)

Nope

[klip]
>Men jeg ved, at hvis det tager længere tid via
> databasen, så er forskellen ubetydelig. Ved et stort antal artikler kan
jeg
> forestille mig at databasen vil være hurtigst.
>
> Det interessante er alle de muligheder databasen giver. Fx. vil det kun
tage
> få minutter at udvikle en funktion, der kan søge efter noget tekst i alle
> artiklerne. Alt det besværlige er nemlig allerede lavet.
> Sådan en fritekst-søgning jeg kan lave på minutter til MySQL, ville tage
mig
> dage at lave til filer. Og selv da, vil db-søgningen være væsentlig bedre.

Jeg havde en mistanke om at det nok var sådan det foregik, men var ikke helt
sikker.

> > Kan et "text"-felt i SQL indeholde uanede mængder af tekst?
>
> http://www.mysql.com/doc/C/o/Column_types.html
>
> "TEXT" kan indeholde op til 65.535.
> "MEDIUMTEXT" op til 16.777.215 tegn.
> "LONGTEXT" op til 4.294.967.295 tegn. I praksis kan du dog ikke hive mere
> end 16 mb ud af én række (som bemærket på samme side). Hvis det er et
> problem, så er det med filerne en god ide.

Well, okay... jeg er omvendt - Jeg bruger aldrig filer mere! Tak for
hjælpen

Mvh. Jette




Niels Andersen (13-01-2002)
Kommentar
Fra : Niels Andersen


Dato : 13-01-02 11:03

"Jette" <jette-nielsen@get2net.dk> wrote in message
news:a1qlbq$259e$1@news.cybercity.dk...
> Well, okay... jeg er omvendt - Jeg bruger aldrig filer mere! Tak for
> hjælpen

Heh.
Det var så lidt. :)

--
Mvh.

Niels Andersen



Sports-MC / Claus Be~ (12-01-2002)
Kommentar
Fra : Sports-MC / Claus Be~


Dato : 12-01-02 16:08

Hej Jette
Tak for dit svar - ligesom dig havde jeg heller ikke lyst til at slå MQ fra
da sitet gør intensivt brug af en MySQL base.

Jeg prøvede at smide stripslashes() på før jeg gemte - og vupti, problem væk


Tak også til de andre der svarede i denne tråd!

Hilsen,
Claus


Jette wrote:

> De advarer imod at slå magic_quotes fra og gav mig istedet denne løsning:
>
> $array = file("sti/til/fil.txt");
> $streng = join('', $array);
> echo stripslashes($streng);

--

-----------------------------------------------------------------------
Sports-MC.dk Fax: +45 3833 4071
Tomsgaardsvej 76 - 1 Phone: +45 3833 4070
2400 Copenhagen e-mail: info@sports-mc.dk
DK - Denmark www: http://www.sports-mc.dk
VAT number: 17 70 71 40



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408942
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste