Avatar billede superbent Nybegynder
23. oktober 2008 - 21:02 Der er 4 kommentarer og
1 løsning

preg_match_all til at hente data fra fil men mangler lidt hjælp

Hej

Jeg er ikke stærk i reg ex, men har fundet frem til følgende nedenstående.

Det skal lige siges at mit ønske, er at få fat i data der er imellem x og y, eksempelvis alt data imellem <div class="test"> og </div>

$search_string = file_get_contents("test.txt");
$find_first    = "<div class=\"test\"";
$find_last    = "<\/div";

preg_match_all("/$find_first.*?>($find_last.*?).*?>/si", $search_string, $result, PREG_PATTERN_ORDER);

foreach ($result as $value) {
  for ($i=0;$i<=count($value);$i++) {
    echo format_content($value[$i]);
  }
}


Men jeg får ikke KUN det data jeg vil have, jeg får noget ekstra med, som jeg gerne vil undgå. Et eksempel på hvad der kommer med.



<div class="test">
her er en tekst<br />
her er en tekst<br />
her er en tekst<br />
her er en tekst<br />
her er en tekst<br />
</div>
</div>
<div class="test-tekst">
<div class="test-tekst-nr"><p align="right">2</p></div>
<div class="test">
her er en tekst<br />
her er en tekst<br />
her er en tekst<br />
</div>
</div>


Altså i ovenstående eksempel får jeg alt dette ekstra med jeg ikke ønsker:
</div>
<div class="test-tekst">
<div class="test-tekst-nr"><p align="right">2</p></div>


Jeg håber at det lyder forståeligt og nogen kan hjælpe med at rette min regex til noget der bedre funker, tak.
Avatar billede erikjacobsen Ekspert
23. oktober 2008 - 21:15 #1
Du kunne prøve

preg_match_all("/<div class=\"test\".*?>(.*?)<\/div>/si", $search_string, $result, PREG_PATTERN_ORDER);
Avatar billede erikjacobsen Ekspert
23. oktober 2008 - 21:23 #2
Du skal nok også skrive ud sådan her:

for ($j=0;$j<count($result[1]);$j++) {
  print htmlentities($result[1][$j])."<br>------------------<br>";
}
Avatar billede superbent Nybegynder
23. oktober 2008 - 21:38 #3
Tak, bare læg et svar :)
Avatar billede erikjacobsen Ekspert
23. oktober 2008 - 21:50 #4
Jeg samler slet ikke på point, tak. Svar selv, accepter dit eget svar.
Avatar billede superbent Nybegynder
23. oktober 2008 - 22:25 #5
Ok.

Mange tak for hjælpen, nu kan jeg komme videre :)
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