Avatar billede pissed_squirrel Nybegynder
21. august 2008 - 23:00 Der er 16 kommentarer og
1 løsning

Explode Problem

Hej Experter

Jeg har et problem med explode

Hvis jeg skriver sådan her:

$string = explode("Images\\", "C:\Users\User1\Documents\Movie Collector\Images\40DaysAnd40Nights20021367_f.jpg");
print_r($string);

Får jeg:

Array ( [0] => C:\Users\User1\Documents\Movie Collector\Images DaysAnd40Nights20021367_f.jpg )

Men den skulle jo gerne dele ved 'Images\'

Og hvis jeg skriver denne sti i stedet:

C:\Users\User1\Documents\Movie Collector\Images\102Dalmatians2000854_f.jpg

Så får jeg:

Array ( [0] => C:\Users\Christoffer Guldager\Documents\Movie Collector\ImagesBDalmatians2000854_f.jpg )

Nogle der ved hvorfor den ikke bare deler som jeg har bedt den om, og hvad jeg evt. kan gøre for at komme uden om dette problem?

Mange tak på forhånd =)
Avatar billede pissed_squirrel Nybegynder
21. august 2008 - 23:01 #1
Array ( [0] => C:\Users\User1\Documents\Movie Collector\ImagesBDalmatians2000854_f.jpg )

Skulle der selvfølgelig stå ;)
Avatar billede pissed_squirrel Nybegynder
21. august 2008 - 23:31 #2
Har også prøvet med split, men det giver endnu dårligere resultat

Har fundet ud af det lader til at være talende lige efter 'Images\' som ødelægger det hele, for hvis man fjerner de tal som står først i fil navnet så virker det fint, men det er jo langt fra optimalt, specielt fordi der er over 400 stier, og jeg bare skal have navnet på filen så det kan smides ind i en database
Avatar billede w13 Novice
21. august 2008 - 23:35 #3
Du kunne måske bygge det op således i stedet:

$string = "C:\Users\User1\Documents\Movie Collector\Images\40DaysAnd40Nights20021367_f.jpg";

$string = substr($string, 'images\\');
Avatar billede pissed_squirrel Nybegynder
22. august 2008 - 09:46 #4
virker ikke med substr
Den splitter ikke noget
C:\Users\User1\Documents\Movie Collector\Images\102Dalmatians2000854_f.jpg
C:\Users\User1\Documents\Movie Collector\ImagesBDalmatians2000854_f.jpg
Som du kan se laver den \102 om til stort B, men det er også det eneste. Virker ikke engang hvis jeg fjerner 102.

Nogle andre der har nogle løsninger som måske virker?
Avatar billede w13 Novice
22. august 2008 - 12:26 #5
Det skyldes vist, at "\102" er koden for stort B.. Så muligvis bliver det automatisk erstattet, allerede inden vi gør noget.

Prøv at køre din string igennem funktionen addslashes(), når du laver den.
Avatar billede w13 Novice
22. august 2008 - 12:28 #6
Du har ikke mulighed for, bare som standard at sætte \ som \\ alle steder?
Avatar billede jakobdo Ekspert
22. august 2008 - 12:32 #7
Som W13 er inde på, dine / skal escapes i din streng.

<?php
//http://www.eksperten.dk/spm/842517

$string = explode('Images\\', 'C:\\Users\\User1\\Documents\\Movie Collector\\Images\\40DaysAnd40Nights20021367_f.jpg');
echo '<pre>';
print_r($string);
echo '</pre>';
?>
Avatar billede pissed_squirrel Nybegynder
22. august 2008 - 13:04 #8
Det virker fint hvis jeg manuelt tilføjer slashes så strengen ser således ud:

C:\\Users\\User1\\Documents\\Movie Collector\\Images\\40DaysAnd40Nights20021367_f.jpg

Men der er ca. 500 strenge der skal igennem explode og så meget tid synes jeg altså heller ikke jeg lige har

Hvis jeg bruger addslashes så sker der nogenlunde det samme som uden
Array ( [0] => C:\\Users\\User1\\Documents\\Movie Collector\\Images DaysAnd40Nights20021367_f.jpg )

Det er jo ikke optimalt

Lader til at \40 er space og \102 er B
Avatar billede jakobdo Ekspert
22. august 2008 - 13:16 #9
Hvad med en str_replace() på \ til \\ ?
Avatar billede pissed_squirrel Nybegynder
22. august 2008 - 13:23 #10
Samme problem som med addslashes

C:\\Users\\User1\\Documents\\Movie Collector\\Images DaysAnd40Nights20021367_f.jpg

Lader til at PHP erstatter \40 og \102 før den gør hvad man har bedt den om
Avatar billede jakobdo Ekspert
22. august 2008 - 13:33 #11
Det virker hos mig unden replace eller addslashes()

http://www.codebreaker.dk/exp/842517exp.php
Avatar billede pissed_squirrel Nybegynder
22. august 2008 - 13:35 #12
Hvilken version af PHP bruger du?

Min er v. 5.2.3
Avatar billede pissed_squirrel Nybegynder
22. august 2008 - 13:39 #13
Nu har jeg fundet ud af hvorfor jeg får fejl, eller rettere hvordan jeg kan ungå fejl

Jeg har defineret string med ", men hvis jeg bruger ' i stedet lige som jakobdo har gjort så virker det med explode og uden addslashes eller replace

Meget underligt :P
Avatar billede jakobdo Ekspert
22. august 2008 - 13:53 #14
Haha, ja der er jo netop noget med php undersøger strengen yderligere, hvis den er i "" og ikke i ''.
Altid rart at vide.
Avatar billede pissed_squirrel Nybegynder
22. august 2008 - 14:01 #15
Men det var jo med din hjælp jakobdo at jeg fandt frem til fejlen og nu er kommet videre, så mange tak for hjælpen

Hvis du smider et svar så er der point på vej til dig =)
Avatar billede jakobdo Ekspert
22. august 2008 - 15:09 #16
Svar!
Avatar billede jakobdo Ekspert
22. august 2008 - 15:46 #17
Takker for point
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