Grab href attribute?

hi all. need some quick help for a php newb.

<a href=“/test/pagename/”>

i need php to get “pagename” from that href attribute and set it as a variable. i need to compare it with another variable i’m using.

thanks so much!

If you already have a string with just the complete anchor tag, this code will work.

$string = "<a href=\\"/test/pagename/\\">";

$pattern = "<a.+href=\\"(.+)\\".+>";
preg_match($pattern, $string, $matches);
$matches = array_values(array_filter(explode('/', $matches[1])));
$pagename = $matches[count($matches)-1];

Please remember to use the non-greedy modifier (which i believe is ?) on your patterns…

Star, would you be so kind as to show a pattern for this that does so?

Basically, anywhere you go for .+ (or .*), make it .+? …

<a href=“quack”></a><a href=“moo”></a>

Your pattern, greedily, could potentially return a single value containing { quack"></a><a href="moo }, rather than the 2 values expected.

Thanks for pointing that out, StarLion. That’s been a thorn in m side I’ve always had some trouble with. The new pattern looks like this:

$pattern = "<a.+?href=\\"(.+?)\\".*?>";

$string = '<a href="/test/pagename/">';
preg_match_all('/href="(.*?)"/', $string, $matches);
$array = explode("/", trim($matches[1][0], '/'));
echo $array[count($array) - 1];