Bob Cavezza
Bob Cavezza

Reputation: 2850

How to extract link anchor text with a certain keyword from a string

I want to extract the url of all links in a string with certain anchor text.

I saw a previously post on doing this in javascript - can anyone help me do this in PHP?

javascript regex to extract anchor text and URL from anchor tags

Upvotes: 1

Views: 4046

Answers (2)

AlexJF
AlexJF

Reputation: 886

preg_match_all('#<a\s+href\s*=\s*"([^"]+)"[^>]*>([^<]+)</a>#i', $subject, $matches, PREG_SET_ORDER);

foreach ($matches as $match) {
    echo $match[0]; // <a ... href="url" ...>text</a>
    echo $match[1]; // url
    echo $match[2]; // text
}

This is how I'd do it with regex. There may be more efficient ways but this should be the simplest one.

EDIT: Noticed that you wanted to match all URLs, therefore changed to preg_match_all

preg_match_all

Upvotes: 3

webbiedave
webbiedave

Reputation: 48897

If you're parsing HTML to extract href attribute values from anchor tags, use an HTML/DOM Parser (definitely don't use regex).

PHP Simple HTML DOM Parser

PHP XML DOM

Upvotes: 3

Related Questions