Avatar billede Noob Novice
06. august 2017 - 15:50 Der er 1 kommentar og
1 løsning

Hjælp til preg_match_all

Hej med jer her inde :D
måske der en venlig en der kunne hjælpe mig :D
Jeg Crawler en side og henter det ned på en txt fil på serveren og derfra skal jeg hente nogen data.
jeg har haft bruget den her og det virker fint til at hente billederne.

preg_match_all("/(<img class=\"glob-ident-row-image alignLeft vertAlignTop\" src=\"\/resource\/media\/)(.*?)(\?ptype=1)/", $html, $billede, PREG_SET_ORDER);

men når jeg vil hente noget tekst og html så kikser det.
Jeg vil hente det her i mellem<h3 class="glob-floatLeft"> og <div class="padrgt50">

<h3 class="glob-floatLeft">
            Bivirkninger
          </h3>
    <div class="glob-floatRight phone-content-header-openclose-arrow-wrapper"><img class="phone-content-header-openclose-arrow" src="/Content/Images/Pro/Topmenu/link_foldud_pro.gif" width="17" height="11" alt=""></div>
    <div class="glob-floatNone"></div>
  </div>
  <div class="glob-floatNone glob-content-section-text phone-content-section-openclose-text">
    <table class="pipTable width100Procent">
      <tbody>
        <tr>
          <td class="TableBorder" nowrap>Sjældne (0,01-0,1%)</td>
          <td class="TableBorder">Allergiske reaktioner.
                      </td>
        </tr>
        <tr class="TrAlternate">
          <td class="TableBorder" nowrap>Meget sjældne (< 0,01%)</td>
          <td class="TableBorder">Bronkospasme.
                      <br>Agranulocytose, Hæmolytisk anæmi, Trombocytopeni.
                      <br>Stevens-Johnsons syndrom, Toksisk epidermal nekrolyse.
                      <br>Anafylaktisk reaktion, Angioødem.
                      </td>
        </tr>
      </tbody>
    </table>
    <div class="padrgt50">

og så jeg har jeg prøvet det her men virker ikke

preg_match_all('/(<h3 class="glob-floatLeft">)(.*?)(<div class="padrgt50">)/',$html, $matches, PREG_SET_ORDER);


foreach ($matches as $biv) {
   
    echo "" . $biv[0] . "<br>";
    echo "" . $biv[1] . "<br>";
    echo "" . $biv[2] . "<br>";
    echo "" . $biv[3] . "<br>";
}

?>
Avatar billede Slater Ekspert
06. august 2017 - 18:15 #1
Du mangler bare /sm for at få regex'et til at matche over flere linjer.

Altså

preg_match_all('/(<h3 class="glob-floatLeft">)(.*?)(<div class="padrgt50">)/sm',$html, $matches, PREG_SET_ORDER);
Avatar billede Noob Novice
06. august 2017 - 20:11 #2
Super mange tak nu har jeg da fået den til at vise lidt men det viser sig der er mange der hedder det og det er kun bivirkninger jeg vil have, så prøvede det her men det virker ikke,
preg_match_all('/(<h3 class="glob-floatLeft">
            Bivirkninger
          <\/h3>)(.*?)(<\/table>)/sm',$html, $matches, PREG_SET_ORDER);


foreach ($matches as $biv) {
   
    echo "" . $biv[0] . "00000000<br><br><br><br>";
    echo "" . $biv[1] . "11111111<br><br><br><br><br>";
    echo "" . $biv[2] . "22222222<br><br><br><br><br>";
    echo "" . $biv[3] . "3333333<br><br><br><br><br>";
}
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

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