05. februar 2006 - 17:54
Der er
18 kommentarer og 1 løsning
Load side med fopen & fread og kør preg_match på den
Jeg har følgende kode, i min PHP-fil: $dest = "style.css"; $handle = fopen($dest, "r"); $filecontent = fread($handle, filesize($dest)); $str = str_replace("\n", "", $filecontent); preg_match("/(.*)\{(.*)\}/i", $str, $variabel); echo "<pre>"; print_r($variabel); echo "</pre>"; Og style.css indeholder: .list_heading { width: 100%; font-weight: bold; } .list { width: 100%; } Effekten skulle gerne være, at style.css kommer ind i variablen $filecontent, og derefter bliver bearbejdet med preg_match("/(.*)\{(.*)\}/i", $str, $variabel); Men det virker ikke.... Output bliver: Array ( [0] => .list_heading { width: 100%; font-weight: bold;}.list { width: 100%;} [1] => .list_heading { width: 100%; font-weight: bold;}.list [2] => width: 100%; ) Og det er ikke det resultat jeg gerne vil have. Resultatet skulle nogenlunde se sådan ud: Array ( [0] => .list_heading [1] => width: 100%;font-weight: bold; [2] => .list [3] => width: 100%; ) Er der nogen eksperter herinde, som kan hjælpe mig? :D
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
05. februar 2006 - 19:16
#1
Istedet for din måde at læse en side på, hvorfor bruger du så ikke file_get_content() ?
05. februar 2006 - 19:23
#2
Prøv at test: $file = "style.css"; $content = file_get_content($file); if(preg_match_all('/(\\..+?})/s', $content,$matches)) { echo "<pre>"; print_r($matches); echo "</pre>"; }
06. februar 2006 - 16:06
#3
<?php $file = "style.css"; $content = file_get_content($file); if(preg_match_all('/(\\..+?})/s', $content,$matches)) { echo "<pre>"; print_r($matches); echo "</pre>"; } ?> Giver tom side :(... Er der noget jeg har overset?
06. februar 2006 - 16:32
#4
Prøv at print $content og se om det i det hele taget indeholder noget?
06. februar 2006 - 16:36
#5
Det gør den ikke... Men den ligger i samme lib som style.css...
06. februar 2006 - 16:58
#6
Der mangler et S på file_get_contents
06. februar 2006 - 18:18
#7
Så... Nu blev det hele bedre... Men det returnerer: Array ( [0] => Array ( [0] => .list_heading { width: 100%; font-weight: bold; } [1] => .list { width: 100%; } ) [1] => Array ( [0] => .list_heading { width: 100%; font-weight: bold; } [1] => .list { width: 100%; } ) ) Men det hele gentages to gange, og med forkert "opsætning" :(
06. februar 2006 - 18:43
#8
Nope, du skal nemlig bruge: $matches[1][0] og $matches[1][1] Hvad mener du med forkert opsætning?
06. februar 2006 - 19:00
#9
[0] => .list_heading { width: 100%; font-weight: bold; Det skulle jo være [0] => .list_heading { [1] => width: 100%;font-weight: bold;
06. februar 2006 - 19:02
#10
Prøv at ret: '/(\\..+?})/s' til: '/(\\..+?{)(.+)?}/s' Altså i preg_match_all();
06. februar 2006 - 19:28
#11
Array ( [0] => Array ( [0] => .list_heading { width: 100%; font-weight: bold; } .list { width: 100%; } ) [1] => Array ( [0] => .list_heading { ) [2] => Array ( [0] => width: 100%; font-weight: bold; } .list { width: 100%; ) ) Hva gir det???
06. februar 2006 - 20:53
#12
Prøv at se koden her:
http://www.codebreaker.dk/exp/685539.php Du skal bare bruge: $matches[1][0] og [2][0] til den første!
og $matches[1][1] og [2][1] til den nummer 2!
Osv...
08. februar 2006 - 15:02
#13
OK! Til sidst kan jeg ikke helt forstå hvorfor: <?php $file = "style.css"; $content = file_get_contents($file); preg_match_all('/(\\..+?{)(.+)?}/s', $content,$matches) echo $matches[1][0]; echo "<hr>"; echo $matches[2][0]; ?> Ikke virker... Håber selvfølgelig du kan spotte problemet, men under alle omstændigheder må du meget gerne lægge et svar.
08. februar 2006 - 15:14
#14
Prøv lige at forklar helt præcist hvad du ønsker som resultat, så skal jeg prøve igen.
08. februar 2006 - 15:27
#15
Jeg tror ikke det er selve kodens struktur der er noget galt med, der er bare en fejl, for jeg får tom side når jeg tester ovenstående kode.
08. februar 2006 - 15:57
#16
Prøv her: <?php $file = "style.css"; $content = file_get_contents($file); preg_match_all('/(\\..+?{)(.+?)}/s', $content,$matches); echo $matches[1][0]; echo "<hr>"; echo $matches[2][0]; ?>
08. februar 2006 - 16:02
#17
Så virker det :)... Mange tak... Du må gerne lægge et svar :)
08. februar 2006 - 16:06
#18
Svar!
08. februar 2006 - 18:37
#19
Takker for point!
Vi tilbyder markedets bedste kurser inden for webudvikling