Added HTTPResponse::getLinks() for unit testing

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@40589 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Sam Minnee 2007-08-20 22:38:37 +00:00
parent 7a150c48db
commit b5848c9b87

View File

@ -99,5 +99,30 @@ class HTTPResponse extends Object {
function isFinished() { function isFinished() {
return $this->statusCode == 302 || $this->statusCode == 301; return $this->statusCode == 302 || $this->statusCode == 301;
} }
/**
* Return all the links in the body as an array.
* @returns An array of maps. Each map will contain 'id', 'class', and 'href', representing the HTML attributes of the link.
*/
function getLinks() {
$attributes = array('id', 'href', 'class');
$links = array();
$results = array();
preg_match_all('/<a[^>]+>/i', $this->body, $links);
// $links[0] contains the actual matches
foreach($links[0] as $link) {
$processedLink = array();
foreach($attributes as $attribute) {
$matches = array();
if(preg_match('/' . $attribute . '\s*=\s*"([^"]+)"/i', $link, $matches)) {
$processedLink[$attribute] = $matches[1];
}
}
$results[] = $processedLink;
}
return $results;
}
} }