If like me, you often need to use regular expressions, but still after over 10 years of using them can waste an entire morning just trying to write a simple search and replace, here are some really useful snippets I have used along the way.
To match an HTML link within a string, and to isolate the inner HTML, (whatever occurs between the opening and closing anchor tags), use:
#((?:(?!).)*)#i', $input, $match);
// $input - A STRING CONTAINING AN ANCHOR LINK WITH INNER HTML
$input = 'This is some text containing a linked image . Goodbye.';
// $match[0] RETURNS THE ENTIRE LINK INCLUDING THE INNER HTML AND ANCHOR TAGS
$match[0] == '';
// $match[1] RETURNS JUST THE ANCHOR LINK
$match[1] == 'http://www.google.com';
// $match[2] RETURNS THE INNER HTML, IN THIS CASE, JUST THE IMAGE TAG
$match[2] == '';
?>
To match an email address, and to isolate either the username or domain name part of the address, use:
#([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i',
$input, $match);
// $input - A STRING CONTAINING AN EMAIL ADDRESS
$input = 'My email address is [email protected]. Write me!';
// $match[0] RETURNS ONLY THE VALID EMAIL ADDRESS
$match[0] == '[email protected]';
// $match[1] RETURNS ONLY THE USERNAME PART
$match[1] == 'spam-a-lot';
// $match[2] RETURNS ONLY THE DOMAIN NAME PART
$match[2] == 'mydomain.com';
?>
To match an email address, and replace it with a clickable link to the email address, use:
#([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i",
"\\1\\2@\\3", $input);
// $input - A STRING CONTAINING AN EMAIL ADDRESS
$input = 'My email address is [email protected]. Write me!';
// $ret - RETURNED STRING CONTAINING A CLICKABLE EMAIL LINK
$ret == 'My email address is [email protected].
Write me!';
?>