Here's a modified version of snipe's twitterify():
hello world
//
$ret = preg_replace("#(.*?)(http://)?(www\.[^ \"\t\n\r<]+)#", "\\1", $ret);
// if anchor text is empty, insert anchor's href
$ret = preg_replace("#(]+>)()#", "\\1\\3\\4", $ret);
$ret = preg_replace("/@(\w+)/", "@\\1", $ret);
$ret = preg_replace("/#(\w+)/", "#\\1", $ret);
return $ret;
}
Testing the code above with test()...
function test($str) {
print "INPUT: \"" . $str . "\"\nOUTPUT: " . twitterify($str) . "\n\n";
}
// tests
test("www.foo.com");
test("www.foo.com fox");
test("www.test.com fox jumped over www.foo.com");
test("fox jumped over www.test.com the fence www.foo.com");
?>
...results in the following print-outs.
INPUT: "www.foo.com"
OUTPUT: www.foo.com
INPUT: "www.foo.com fox"
OUTPUT: www.foo.com fox
INPUT: "www.test.com fox jumped over www.foo.com"
OUTPUT: www.test.com fox jumped over
INPUT: "fox jumped over www.test.com the fence www.foo.com"
OUTPUT: fox jumped over the fence
Tested on ideone.
EDIT: Updated code to match new requirements