runthis Posted July 15, 2010 Share Posted July 15, 2010 Im not new to php at all, but havent had the need to use preg_match I want to get all the links off of a page, but i want the href, not the class or title or anything heres what i have to get the links <a\s[^>]*href=(\"??)(\/stuff[^\" >]*?)\\1[^>]*>(.*)<\/a> that matches any link that starts with /stuff Quote Link to comment Share on other sites More sharing options...
runthis Posted July 15, 2010 Author Share Posted July 15, 2010 bumb Quote Link to comment Share on other sites More sharing options...
runthis Posted July 15, 2010 Author Share Posted July 15, 2010 bumpity bumpity bump bump bump Quote Link to comment Share on other sites More sharing options...
AbraCadaver Posted July 15, 2010 Share Posted July 15, 2010 I would use something like: "/href=['\"]([^'\"]+)['\"]/" Quote Link to comment Share on other sites More sharing options...
runthis Posted July 15, 2010 Author Share Posted July 15, 2010 How would i add that to this <a\s[^>]*href=(\"??)(\/stuff[^\" >]*?)\\1[^>]*>(.*)<\/a> Quote Link to comment Share on other sites More sharing options...
AbraCadaver Posted July 15, 2010 Share Posted July 15, 2010 How would i add that to this <a\s[^>]*href=(\"??)(\/stuff[^\" >]*?)\\1[^>]*>(.*)<\/a> You wouldn't. What I gave you will get what is inside the href quotes. You'll have to be more specific about what you want, maybe with an example URL. Also, to get all links you'll need preg_match_all(). Quote Link to comment Share on other sites More sharing options...
runthis Posted July 15, 2010 Author Share Posted July 15, 2010 okay, what i want is to grab all the link starting with "/stuff" and filter out everything else, thats what i meant sorry. Quote Link to comment Share on other sites More sharing options...
AbraCadaver Posted July 15, 2010 Share Posted July 15, 2010 okay, what i want is to grab all the link starting with "/stuff" and filter out everything else, thats what i meant sorry. Not tested but should work: preg_match_all("#href=['\"](/stuff[^'\"]+)['\"]#", $source, $matches); print_r($matches); Quote Link to comment Share on other sites More sharing options...
runthis Posted July 15, 2010 Author Share Posted July 15, 2010 Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 't' Quote Link to comment Share on other sites More sharing options...
AbraCadaver Posted July 15, 2010 Share Posted July 15, 2010 Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 't' Did you notice that I am now using # as the delimiters instead of / ? Quote Link to comment Share on other sites More sharing options...
runthis Posted July 15, 2010 Author Share Posted July 15, 2010 Absolutely posted your example exactly Quote Link to comment Share on other sites More sharing options...
AbraCadaver Posted July 15, 2010 Share Posted July 15, 2010 Dunno, works for me: $source='<a href="/stuff/test.php?foo=bar">click</a>'; preg_match_all("#href=['\"](/stuff[^'\"]+)['\"]#", $source, $matches); print_r($matches); Array ( [0] => Array ( [0] => href="/stuff/test.php?foo=bar" ) [1] => Array ( [0] => /stuff/test.php?foo=bar ) ) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.