<?php 

#
# Zero or more whitespace characters
$S0 '\s*';

#
# One or more whitespace characters
$S1 '\s+';

#
# Anchor tag start
$anch1 '<a' $S1;

#
# href= pattern
$href1 'href' $S0 '=' $S0;

#
# quoted strings, with selection
$q1 "'[^']'";
$q2 '"[^"]*"';
$q "($q1|$q2)";

#
# full link pattern
$link_RE "$anch1$href1$q$s0>\s*(.*?)</a>";


function 
parse_links($document) {
  global 
$q$href1$link_RE;
  
preg_match_all("#$link_RE#i"$document$matches);
  return 
$matches;
}


function 
make_link_table($parsed_links) {
  
$table "<table border='1'>\n<thead><tr><th>Anchor Text</th><th>URL</th></tr></thead>\n";
  for (
$i 0$i sizeof($parsed_links[0]); $i++) {
    
$table .= "<tr><td>" $parsed_links[2][$i] . "</td><td><a href=" .
              
$parsed_links[1][$i] . ">" $parsed_links[1][$i] .
              
"</a></td></tr>\n";
  }
  return 
$table "</table>\n";
}



?>

<html>
<head>
<title>Retrieved Links</title>
</head>
<body>
<?php
  
echo(make_link_table(parse_links(file_get_contents("http://www.cs.sfu.ca/"))));
?>
</body>
</html>