Avatar billede andrew Juniormester
18. marts 2023 - 10:27 Der er 2 kommentarer og
1 løsning

Hjælp til preg_match_all

Hej,

Jeg har teksten:
<a href="my-link1">Link1</a><a href="my-link2">Link2</a>

Med koden ønsker jeg at finde href for Link2, men får Link1:
preg_match_all('/href="(.*?)".*?link2/', $content, $matches);


Hvad gør jeg forkert?
Avatar billede arne_v Ekspert
18. marts 2023 - 13:54 #1
Der maa vaere flere muligheder, men en er:

preg_match_all('/href="([^"]+)"\s*>Link2/', $content, $matches);
Avatar billede andrew Juniormester
19. marts 2023 - 08:24 #2
Tak for hurtigt svar.

Hvad så hvis jeg har teksten:
<a role="presentation" href="url1"><div role="link" aria-label="link1"></div></a><a role="presentation" href="url2"><div role="link" aria-label="link2"></div></a>

Jeg skal søge efter link2 og trække url2 ud?
Avatar billede arne_v Ekspert
19. marts 2023 - 15:43 #3
Forslag:


<?php

function find_link($html, $label) {
    if(preg_match('/href\s*=\s*"([^"]+)"\s*>\s*<div[^>]*label\s*=\s*"' . $label . '"/', $html, $m)) {
        return $m[1];
    } else {
        return null;
    }
}

$html = '<a role="presentation" href="url1"><div role="link" aria-label="link1"></div></a><a role="presentation" href="url2"><div role="link" aria-label="link2"></div></a>';
echo 'link1 = ' . find_link($html, 'link1') . "\r\n";
echo 'link2 = ' . find_link($html, 'link2') . "\r\n";
echo 'link3 = ' . find_link($html, 'link3') . "\r\n";

?>
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