Search code examples
phphtmlstringhtml-parsinganchor

How to extract the text between anchor tag in PHP?


I've one string in a variable titled $message as follows :

$message = 'posted an event in <a href="http://52.1.47.143/group/186/">TEST PRA</a>';

I only want to get the text within anchor tag i.e. TEST PRA in this case using PHP.

How should I do this in an efficient way? Can someone please help me in this regard?


Solution

  • Use preg_match_all function inorder to do a global match.

    preg_match_all('~>\K[^<>]*(?=<)~', $str, $match);
    

    Here preg_match would be enough. \K discards the previously matched characters from printing at the final, so it won't consider the previouslly matched > character. You could use a positive lookbehind instead of \K also , like (?<=>). [^<>]* Negated character class, which matches any character but not of < or >, zero or more times. (?=<), Positive lookahead assertion which asserts that the match must be followed by < character.

    DEMO

    $str = 'posted an event in <a href="http://52.1.47.143/group/186/">TEST PRA</a>';
    preg_match('~>\K[^<>]*(?=<)~', $str, $match);
    print_r($match[0]);
    

    Output:

    TEST PRA