Regular expression – PHP

Regular expression is when you have a match condition and a string to search through. Here is a cheat sheet to download to view regular expressions syntax.

The regular matching method in php that I use is preg_match_all

int preg_match_all ( string pattern, string subject, array &matches [, int flags [, int offset]] )

which basically means that it will return a integer value of how many matches it has found within the subject text. The flags and offset are optional values.

Here is a example to pull out HTML A links within a text, A links start with <a and have some optional parameters e.g. href, title >text to display on the screen</a> (the closing tag. So in xml speak as such

value

So the basics of searching for HTML A links within a string is to look for “” which then has the value and then the closing tag . So to put that in regular expression talk, to break it down we first search for the start <a followed by x amount of characters \s.* with a ending tag of <\/a> the “\” is there because the / is a condition statement for regular expression. And with this together it would look like


But because <\/a> happens twice in the string and either one can be the end point of the search since we are searching string values “\s.*” 0-x amount of them. \s means white space character “.” means any character that is not \n and “*” means 0 – more times of the previous check. So there is potential for a problem here we are not telling the regular expression to stop at the first < character and to this we use the [] to match some characters, the ^ in this context means any character not in this list about to come and "<" is the stopping character. So the full regular expression will be.


Here is the php code that will display all of the HTML A links from a string.

codingfriends.com hi there.. " . 
	    " mountains are nice. norfolkhospice.org.uk" . 
	    " support the tapping house in Norfolk";

// the preg_match_all uses regular expression to match and pull out strings, $matches is the matches found.

$matched = preg_match_all("//",$matchAStr,$matches);
echo "There was $matched matche(s)\n";

echo "
    \n"; foreach($matches[0] as $url) { echo "
  1. ".$url."
  2. \n"; } echo "
\n"; ?>
There was 2 matche(s)
  1. codingfriends.com
  2. norfolkhospice.org.uk

Leave a Reply

Your email address will not be published. Required fields are marked *