15 PHP regular expressions for web developers
Regular expressions are a very useful tool for developers. They allow to find, identify or replace text, words or any kind of characters. In this article, I have compiled 15+ extremely useful regular expressions that any web developer should have in his toolkit.
Getting started with regular expressions
For many beginners, regular expressions seems to be hard to learn and use. In fact, they’re far less hard than you may think. Before we dive deep inside regexp with useful and reusable codes, let’s quickly see the basics:
Regular expressions syntax
| Regular Expression | Will match… |
| foo | The string “foo” |
| ^foo | “foo” at the start of a string |
| foo$ | “foo” at the end of a string |
| ^foo$ | “foo” when it is alone on a string |
| [abc] | a, b, or c |
| [a-z] | Any lowercase letter |
| [^A-Z] | Any character that is not a uppercase letter |
| (gif|jpg) | Matches either “gif” or “jpeg” |
| [a-z]+ | One or more lowercase letters |
| [0-9.-] | Ðny number, dot, or minus sign |
| ^[a-zA-Z0-9_]{1,}$ | Any word of at least one letter, number or _ |
| ([wx])([yz]) | wy, wz, xy, or xz |
| [^A-Za-z0-9] | Any symbol (not a number or a letter) |
| ([A-Z]{3}|[0-9]{4}) | Matches three letters or four numbers |
PHP regular expression functions
| Function | Description |
|---|---|
| preg_match() | The preg_match() function searches string for pattern, returning true if pattern exists, and false otherwise. |
| preg_match_all() | The preg_match_all() function matches all occurrences of pattern in string. |
| preg_replace() | The preg_replace() function operates just like ereg_replace(), except that regular expressions can be used in the pattern and replacement input parameters. |
| preg_split() | The preg_split() function operates exactly like split(), except that regular expressions are accepted as input parameters for pattern. |
| preg_grep() | The preg_grep() function searches all elements of input_array, returning all elements matching the regexp pattern. |
| preg_ quote() | Quote regular expression characters |
Validate domain name
Verify if a string is a valid domain name.
$url = "http://komunitasweb.com/";
if (preg_match('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i', $url)) {
echo "Your url is ok.";
} else {
echo "Wrong url.";
}
» Source
Enlight a word from a text
This very useful regular expression find a specific word in a text, and enlight it. Extremely useful for search results.
$text = "Sample sentence from KomunitasWeb, regex has become popular in web programming. Now we learn regex. According to wikipedia, Regular expressions (abbreviated as regex or regexp, with plural forms regexes, regexps, or regexen) are written in a formal language that can be interpreted by a regular expression processor";
$text = preg_replace("/b(regex)b/i", '<span style="background:#5fc9f6">1</span>', $text);
echo $text;
» Source
Enlight search results in your WordPress blog
As I just said that the previous code snippet could be very handy on search results, here is a great way to implement it on a WordPress blog.
Open your search.php file and find the the_title() function. Replace it with the following:
echo $title;
Now, just before the modified line, add this code:
<?php
$title = get_the_title();
$keys= explode(" ",$s);
$title = preg_replace('/('.implode('|', $keys) .')/iu',
'<strong class="search-excerpt">\0</strong>',
$title);
?>
Save the search.php file and open style.css. Append the following line to it:
strong.search-excerpt { background: yellow; }
» Source
Get all images from a HTML document
If you ever widhed to be able to get all images form a webpage, this code is a must have for you. You should easily create an image downloader using the power of cURL.
$images = array();
preg_match_all('/(img|src)=("|')[^"'>]+/i', $data, $media);
unset($data);
$data=preg_replace('/(img|src)("|'|="|=')(.*)/i',"$3",$media[0]);
foreach($data as $url)
{
$info = pathinfo($url);
if (isset($info['extension']))
{
if (($info['extension'] == 'jpg') ||
($info['extension'] == 'jpeg') ||
($info['extension'] == 'gif') ||
($info['extension'] == 'png'))
array_push($images, $url);
}
}
» Source
Remove repeated words (case insensitive)
Often repeating words while typing? This handy regexp will be very helpful.
$text = preg_replace("/s(w+s)1/i", "$1", $text);
» Source
Remove repeated punctuation
Same as above, but with punctuation. Goodbye repeated commas!
$text = preg_replace("/.+/i", ".", $text);
» Source
Matching a XML/HTML tag
This simple function takes two arguments: The first is the tag you’d like to match, and the second is the variable containing the XML or HTML. Once again, this can be very powerful used along with cURL.
function get_tag( $tag, $xml ) {
$tag = preg_quote($tag);
preg_match_all('{<'.$tag.'[^>]*>(.*?)</'.$tag.'>.'}',
$xml,
$matches,
PREG_PATTERN_ORDER);
return $matches[1];
}
» Source
Matching an XHTML/XML tag with a certain attribute value
This function is very similar to the previous one, but it allow you to match a tag having a specific attribute. For example, you could easily match <div id=”header”>.
function get_tag( $attr, $value, $xml, $tag=null ) {
if( is_null($tag) )
$tag = '\w+';
else
$tag = preg_quote($tag);
$attr = preg_quote($attr);
$value = preg_quote($value);
$tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*".
"(['\"])$value\\2[^>]*>(.*?)<\/\\1>/"
preg_match_all($tag_regex,
$xml,
$matches,
PREG_PATTERN_ORDER);
return $matches[3];
}
» Source
Matching hexadecimal color values
Another interesting tool for web developers! It allows you to match/validate a hexadecimal color value.
$string = "#555555";
if (preg_match('/^#(?:(?:[a-fd]{3}){1,2})$/i', $string)) {
echo "example 6 successful.";
}
» Source
Find page title
This handy code snippet will find and print the text within the <title> and </title> tags of a html page.
$fp = fopen("http://www.catswhocode.com/blog","r");
while (!feof($fp) ){
$page .= fgets($fp, 4096);
}
$titre = eregi("<title>(.*)</title>",$page,$regs);
echo $regs[1];
fclose($fp);
Parsing Apache logs
Most websites are running on the well-known Apache webserver. If your website does, what about using PHP and some regular expressions to parse Apache logs?
//Logs: Apache web server //Successful hits to HTML files only. Useful for counting the number of page views. '^((?#client IP or domain name)S+)s+((?#basic authentication)S+s+S+)s+[((?#date and time)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)/[^ ?"]+?.html?)??((?#parameters)[^ ?"]+)? HTTP/[0-9.]+"s+(?#status code)200s+((?#bytes transferred)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent)[^"]*)"$' //Logs: Apache web server //404 errors only '^((?#client IP or domain name)S+)s+((?#basic authentication)S+s+S+)s+[((?#date and time)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)[^ ?"]+)??((?#parameters)[^ ?"]+)? HTTP/[0-9.]+"s+(?#status code)404s+((?#bytes transferred)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent)[^"]*)"$'
» Source
Replacing double quotes by smart qutotes
If you’re a typographer lover, you’ll probably love this regexp, which allow you to replace normal double quotes by smart quotes. A regular expression of that kind is used by WordPress on contents.
preg_replace('B"b([^"x84x93x94rn]+)b"B', '?1?', $text);
» Source
Checking password complexity
This regular expression will tests if the input consists of 6 or more letters, digits, underscores and hyphens.
The input must contain at least one upper case letter, one lower case letter and one digit.
'A(?=[-_a-zA-Z0-9]*?[A-Z])(?=[-_a-zA-Z0-9]*?[a-z])(?=[-_a-zA-Z0-9]*?[0-9])[-_a-zA-Z0-9]{6,}z'
» Source
WordPress: Using regexp to retrieve images from post
As I know many of you are WordPress users, you’ll probably enjoy that code which allow you to retrieve all images from post content and display it.
To use this code on your blog, simply paste the following code on one of your theme files.
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php
$szPostContent = $post->post_content;
$szSearchPattern = '~<img [^>]* />~';
// Run preg_match_all to grab all the images and save the results in $aPics
preg_match_all( $szSearchPattern, $szPostContent, $aPics );
// Check to see if we have at least 1 image
$iNumberOfPics = count($aPics[0]);
if ( $iNumberOfPics > 0 ) {
// Now here you would do whatever you need to do with the images
// For this example the images are just displayed
for ( $i=0; $i < $iNumberOfPics ; $i++ ) {
echo $aPics[0][$i];
};
};
endwhile;
endif;
?>
» Source
Generating automatic smileys
Another function used by WordPress, this one allow you to automatically replace a smiley symbol by an image.
$texte='A text with a smiley :-)';
echo str_replace(':-)','<img src="smileys/souriant.png">',$texte);
Just wanna say awesome post. The whole PHP content you showed above really help most of the web developers and help to make their task easy. Me too very thankful to you for this nice post..
Hey, I haven’t tested to make sure, but I think the first get_tag function would be broken by the following:
get_tag('a', '<a title="is a > b?" href="a-gt-b.htm" />Is A > B?</a>');
The RegEx would match that first > in the attribute and the following text would be returned
b?” href=”a-gt-b.htm” />Is A > B?
OK, hopefully none of this comment will be interpreted by WordPress in an unexpected way
Hello,
I don’t undertand how they work. For example if i want that $test don’t have any uppercase letter, how I have to do?
strtolower($test);
[...] 15 PHP regular expressions for web developers Share and Enjoy: [...]
first I would like to say, “great article”. I haven’t used RegEx in quite sometime now, but if I remember correctly “[0-9.-] Ðny number, dot, or minus sign” in this example the dot will match anything, if you would like match the dot you have to escape it. please correct me if I am wrong.
very nice
thanks
Sweet article! I’ve seen a lot of Cats Who Code around the web recently, keep up the great posts and I’ll be following along all the way.
I am a big fan of regular expressions, because they can make sorting through a bunch of text so much simpler. I wish I had known about them when I first started coding. This is a cool guide and has some great examples!
[...] 15 PHP regular expressions for web developerscatswhocode.com [...]
Seems WP has munged up your code (particularly backslash escaping).
[...] original here: 15 PHP regular expressions for web developers SHARETHIS.addEntry({ title: "15 PHP regular expressions for web developers", url: [...]
You mean:
$text = preg_replace(“/\\.+/i”, “.”, $text);
Excellent article, I found the code to parse Apache logs and to get all images in a HTML document particularly clever. You did however leave out a very common use for regex that web developers often need to use: validating email addresses.
$address = 'some email address here';
$ valid = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
echo $valid;
The preg_match() function above will of course evaluate to false. Again, excellent article. I will be putting some of these to use in the near future no doubt.
Thanks for such nice regex.
But can I get an regex which will replace text which is enclosed in html comment.
That’s a useful list, I recently watched the Themeforest screencast on regex too.
And to anyone who gets trouble when posting code, just escape them using an encoder like Postable.
Enlight != word. I’d suggest ‘highlight’ instead.
@#3 – if you want to make sure that you have only lowercase chars in your string $test, do
if(preg_match(“/[a-z]/”,$test))
{
echo ‘all lowercase’;
}
oops – I see that my five second regex doesn’t quite do what you’re asking for – make that
if(!preg_match(â€/[A-Z]/â€,$test))
{
echo ‘all lowercase’;
}
[...] 15 PHP regular expressions for web developers (tags: php regex programming tips regexp wordpress code regular) [...]
[...] can read the full post here. ShareCloseSocial WebE-mail [...]
[...] 15 PHP regular expressions for web developers 15 PHP regular expressions for web developers [...]
Merci Jean, c’est complet et et très utile.
Bye.
[...] Expression is a powerfull tools to manipulate text string. Today I found the 15 example of regex usage in PHP. The examples in that post is something that I looking for all the time. I’m lazy enough to [...]
You forgot to escape dots in some of your expressions.
A dot is a meta-character to match all characters except newline.
Thanks a lot for these tips.
Very useful.
Bookmarked
[...] CatsWhoCode.com today there’s a new article listing fifteen handy regular expressions you might find useful in your day-to-day development (as [...]
[...] CatsWhoCode.com today there’s a new article listing fifteen handy regular expressions you might find useful in your day-to-day development (as [...]
[...] CatsWhoCode.com today there’s a new article listing fifteen handy regular expressions you might find useful in your day-to-day development (as [...]
[...] 15 PHP regular expressions for web developers [...]
This is an awesome online regex tester. I use it all the time. http://www.spaweditor.com/scripts/regex/index.php
What do you mean by “enlight” – is that like, highlight?
[...] CSS-Tricks 7 Secrets to Tweeting Your Corporate Culture How to Buy a Mattress * Get Rich Slowly 15 PHP regular expressions for web developers E-Commerce Web Design Toolbox 22 Free Fonts To Achieve That Hand Drawn Effect Web Design Tutori [...]
Thanks a lot! Very useful tips and apps! I’ve tried a few already and can’t be more happier.
[...] 15 PHP regular expressions for web developers (tags: regular-expressions web_development programacion tools tutorial php code programming development tutorials scripts tips regex expression regexp regularexpression expressions regular examples snippets) [...]
Great set of regex’s. Another good one to add would be a decent phone number validation, especially for international #’s, and maybe a clean credit card number validator.
Anyway, good resource.
[...] 15 PHP regular expressions for web developers (tags: webdesign javascript php tutorials) [...]
Validate domain name is not working.
Anyone want to correct this regular expression?
Error: Found:
Warning: preg_match() [function.preg-match]: Unknown modifier ‘/’ in D:\projects\regex.php on line 3
Wrong url.
$url = “http://komunitasweb.com/”;
if (preg_match(‘/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i’, $url)) {
echo “Your url is ok.”;
} else {
echo “Wrong url.”;
}
[...] Shared 15 PHP regular expressions for web developers [...]
Regarding the example “Validate domain name” – does that match IDN (Internationalized Domain Name) domains also? Like: www.åäö.se
Good post!….
would like to add the following ExtJS regexp form validation that you can simply use for PHP regexp as well http://extjs.com/forum/showthread.php?t=4271
Nice Post! Thanks
Hi. Just wanted to say that this is an excellent post. I needed someone to explain clearly the meaning of symbols for reg expressions and this does it with ease. Bookmarked and I will be subscribing to the RSS. Many thanks.
I love this post…. very useful thx
[...] a un RT de Smashing Magazine llego a una genial lista de 15 expresiones regulares en PHP útiles para desarrolladores en la que se pueden encontrar desde un validador de URI hasta una expresión para parsear logs de [...]
very great post! anyway this is very useful in some projects, specially for web scrap
I use to work most this things for a year but suddenly I getting bored..
[...] 15 PHP regular expressions for web developers. Tags: [...]
Super cool story, bro. None of these examples actually work since all backslashes have been stripped.
Following one is wrong:
Remove repeated punctuation
Same as above, but with punctuation. Goodbye repeated commas!
$text = preg_replace(“/.+/i”, “.”, $text);
You’re replacing any number of any not a line break character with a dot. If you wished to replace dots, you must escape it first like:
$text = preg_replace(“/\.+/i”, “.”, $text);
Or if you wanted to replace multiple commas, put commas (no escaping needed).
[...] http://www.catswhocode.com/blog/15-php-regular-expressions-for-web-developers [...]
[...] 15 PHP Regular Expressions for Web Developers [...]
It looks like a number of the regex strings were modified when you copied and pasted them. Primarily, the backslashes were dropped. For example, you have “/s(w+s)1/i” for the remove repeated words regex when it should be “/\s(\w+\s)\1/i”. Repeated punctuation, hexadecimal color values, smart quotes, password complexity, and probably some others that I missed all have this problem.
Love seeing a post not just about regular expressions, but actual usage and examples. Thanks for the post.
[...] Julio 29, 2009 15 PHP regular expressions for web developers. [...]
[...] 15 PHP regular expressions for web developers: http://www.catswhocode.com/blog/15-php-regular-expressions-for-web-developers [...]
Agree great post for the simple fact you post snippets of code and use real world examples. The replace smiley exmaple is the most useful I think!?
Thanks for the information!
[...] Source: 15 PHP regular expressions for web developers [...]
Enlight…highlight…what’s the difference. I’m just a stupid American and I knew what he meant. I’m pretty sure that if I had to, I would have chosen the wrong french word, or tense, or gender…whatever. Good post – simplest, most useful summary of regex I’ve ever read. Thanks.
[...] بین تویترگردى‌هاى امروز این لینک رو پیدا کردم که برام خیلى جالب بود .  این عبارات [...]
Thanks for the great article.
[...] Here is the complete article [...]
Can you please go through the expression for Validate domain name?
I also got the error =
Warning: preg_match() [function.preg-match]: Unknown modifier ‘/’
Matching XML tags won’t work if you have similar nested tags. XML in general is quite evil.
Regular expressions make it more easy for the developers!
Thanks a lot! Very useful tips and apps! I’ve tried a few already and can’t be more happier.
[...] 15 PHP regular expressions for web developers [...]
In your domain name validation, you got something like this:
(d+)?
I assume it’s meant to validate a port number?
It should be instead be like this: (:\d+)
Otherwise it would match a single colon without a number following it.
Also note there was a backslash missing before the d.
Very Usefull! Thanks
Fantastic article. I was wondering though, any ideas why a preg_replace might not work with the_excerpt, and what could I do to make it work?
[...] 15 PHP regular expressions for web developersA nice tutorial about useful regular expressions to be used in PHP. [...]
Cool – thanks for yout work.
[...] Link [...]
[...] tool which when used correctly, can accomplish some pretty amazing things as demonstrated in this excellent article. However, they are far slower than the native PHP string manipulation functions and tend to make [...]
[...] Visit Article [...]
Hi! Pretty nice list of regular expressions. Could be useful. Will check again when i will need them. I also check your blog and there are a lot of useful posts.
[...] Visit Article [...]
[...] Visit Article [...]
[...] Visit Article [...]
[...] Visit Article [...]
I am really surpried by getting this collections of regular expressions, It’s really very helpful.
[...] http://www.catswhocode.com/blog/15-php-regular-expressions-for-web-developers [...]
[...] Visit Article [...]
[...] 15 PHP regular expressions for web developers [...]
[...] View More.. [...]
Validate domain name regular expression:
(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))
Superb post, bookmarked for sure !
Nice one!
helpful codes, thanks for the list..
How much ever I try, they just don’t seem to get into my head
will bookmark and read again
Thanks for this post. It’s surprising that many developers don’t really understand the full potential of regular expressions. They write elaborate functions to extract items of data, which can be done with a one line RE!!!
[...] Visit Article [...]
[...] 13. 15 PHP regular expressions for web developers [...]
Thanks, a really great article. I already bookmarked this page.
thanks for your information.it is very helpful for me!
thanks
[...] 15 PHP regular expressions for web developers. [...]
[...] I have found most comprehensive regular expression on the web. I am sure that It will help you  Read More [...]
[...] 15 PHP Regular Expression for Web Developers [...]
[...] 15 PHP Regular Expression for Web Developers [...]
[...] 15 PHP Regular Expression for Web Developers [...]
[...] http://www.catswhocode.com/blog/15-php-regular-expressions-for-web-developers [...]
#9 Matching hexadecimal color values the regex doesnt work for all hexadecimal codes, for examble numeric ones, and alpha numeric. I suggest that this regex is used instead:
To Validate a Hexadecimal Colour, with or without the #
/^(#)?([0-9a-f]{1,2}){3}$/i
To Validate a Hexadecimal Colour, WITH #
/^#([0-9a-f]{1,2}){3}$/i
You could use this to replace colours in a string via:
$str = ‘#6699CC and #00ff44 and #ff0000′;
echo preg_replace(‘|#([0-9a-f]{1,2}){3}|i’,'$0′,$str);
[...] 15 PHP Regular Expression for Web Developers [...]
That sure cleared some things up! Thanks a lot, keep writing stuff like that. I`m in here on a regular basis just to learn. =)
[...] 15 PHP regular expressions for web developers Submitted by Editorial Team [...]
Great info, sure cleared some things up. Guess I still got a couple of things to learn, though. Thank you.
Matching a XML/HTML tag: example does not work, same problem on the source website.
copy/paste is ok. copy/paste+test is better.
But i have no anger. Let the light of love shine upon your soul.
I use Regular Expressions everyday, could not function without them. Great list by the way!
[...] tool which when used correctly, can accomplish some pretty amazing things as demonstrated in this excellent article. However, they are far slower than the native PHP string manipulation functions and tend to make [...]
Highly informative and useful post. This would be a great reference guide to any web developer out there from beginner to advanced level. All I can say is, “Bravo”!
This is useful stuff, will be bookmarking this page!
Has anyone got a good introduction to php page to look at?
[...] ИÑточник [...]
How can I do this?
Consider the following sms header
To: #
Modem: GSM1
Sent: 09-09-21 13:25:39
Message_id: 69
IMSI: 413022600405030
I need to get the Message id (number only)
Please help me to do it…
TItle regular expression is incorrect. TITILE tag can have a number of attribues (i.e. lang), so the right one will be the following:
$titre = eregi(“]*>(.*)”,$page,$regs);
Wonderful list. Here is a very useful regex tester for PHP.
www.pagecolumn.com/tool/pregtest.htm
I am having a weird problem with Regex to validate domain names. I am using the following expression “/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i”
It works fine the first time the user same this regular expression. But if the user saves the same expression the next time, it stops working. Also if I check the expression at this point all the back slashes \ are missing from the expression. What could be the problem.
Great blog post, exactly what i was looking for and has saved me time figuring it out for myself. Reg-ex is a specialist subject all on its own
Excellent Article. I learned alot from this article. I was always scared learning regular expressions. but from your article i learned it easily.
[...] the limit but that’s also much more than most of us need. I found this simple list of 15 common regular expressions covers most of what many of us need. Here’s a great cheat sheet to jog your memory once [...]
This looked like such a great reference. Until I tried copy and paste of one of the code snippets. Then read the comments and realized that some might not work. Not the author’s fault, I’m sure, but it’s disappointing nonetheless it’s been this long and he hasn’t been back to rectify the fault. Another waste of time.
Remove repeated punctuation is kinda stupid, if you don’t escape the dot. (;
I looked forward to reading this post when I saw smashing-mag tweet about it… but I must say I’m quite disappointed to see regular expressions being used for some of the tasks you have outlined.
The opening was quite good, but I have to note, you missed than \w can replace “a-zA-Z0-9_” and \d for 0-9, but those are quite forgivable oversights.
Immediatly I’m confronted with a regex to validate a domain name, which fails! it does nothing to check the validity of the top level domain (this would be an enormous regex, which is why regex’s are not recommended for this task), not to mention not being able to copy with new punycode domains.
The next problem is, using regular expressions for parsing a html document? this is madness. regular expressions are hugely inefficient for this task. If you wish to grab a title, all the a tags, all the img tags, or query a HTML dom for an attribute, use a proper DOM parser. There is a fantastic one built into PHP, called DOM.
And the last gripe, using a regex to parse an apache log. This is just silly. an apache log could be quite huge. You should write a proper parser for the task, and parse the log through a stream, and not be using a regex against the whole log. Using a regex for this task is going to eat a huge amount of memory, and be slow as hell!
I’m sorry that these complaints are strongly worded, but you have a huge audience here, you should be doing a much better job than this. People will not advance as coders without pointing in the RIGHT direction, this is taking them off at a tangent they will need to unlearn in the future!
There are some valid usecases for regular expressions in this post, removing repeated words, doubled punctuation, and even swapping in smileys, but Its sad to see the rest on a post in a site like this. shame on you!
Thanks for the input Ryan. I agree that some items of this posts are “quick and dirty”, such as the “Parse apache log” regexp. Thanks for pointing it out, comments like yours are useful in order to enhance the site quality.
[...] links for March 01, 2010 Filed under: General — by Automaton on 3/1/2010 @ 9:55 pm 15 PHP regular expressions for web developers Essentially an intro to regex. (tags: webdesign programming regex) Comments [...]
The above comment from Ryan Mauger is a good starting point regarding the contents of this post.
Stupid regular expressions, miserable code (PHP). Such a bad post.
You copied the contents for this post from across the web, without having an idea on what bullshit you are spreading, did you?
“15+ extremely useful regular expressions that any web developer should have in his toolkit”
Sorry, but it’s embarrassing.
Ryan Mauger explained why he didn’t liked the post, which is a good thing. Too bad you didn’t. If you have better regexp, I’ll be happy to publish them, feel free to share.
Im sorry, but I did not mean to start any sort of flaming here. merely to voice my disappointment. There is no need to be insulting in the way you are here.
Jean-Baptiste generally does a good job on this site, and hopefully my comments will push him to improve his quality. Comments like yours will only strive to anger and upset, and achieve nothing.
[...] 15 PHP regular expressions for web developers (tags: examples php regular expressions regexp) [...]
[...] 15 PHP regular expressions for web developers – [...]
[...] buon Jean Baptiste Jung ha riunito in un articolo ben 15 utilissimi usi delle espressioni regolari, tutte facenti uso del [...]
Social comments and analytics for this post…
This post was mentioned on Twitter by catswhocode: 15 PHP regular expressions for web developers http://tr.im/ueKB (Please RT!!)…
^[a-zA-Z0-9_]{1,}$
Any word of at least one letter, number or _
What is this about? Whatever happened to ^\w+$
[...] 15 expressions régulières pour les développeurs PHP [...]
[...] you’re interested in regular expressions, make sure you have read our “15 PHP regular expression for developers” post. Share this on del.icio.us Digg this! Stumble upon something good? Share it on [...]
[...] 15 PHP Regular Expressions — 15 trucs et astuces PHP pour développeurs web. [...]
To all of you who get : Warning: preg_match() [function.preg-match]: Unknown modifier ‘/’
Simply replace the first ” / ” and last ” / ” (before the “i”) of the pattern (in the preg_match) with the symbol ” # “.
So the first line of the condition should give you this:
if (preg_match(‘#^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?#i’, $url)) {
The regex in itself is not too efficient, but if you think it will be enough for your website, just copy/paste my modifications.
[...] PCRE page Learning to Use Regular Expressions by Example (might be a bit outdated, we’ll see) 15 PHP Regular Expressions For Web Developers – Cats Who [...]
[...] http://www.catswhocode.com/blog/15-php-regular-expressions-for-web-developers – I’ll be the first to admit that regular expressions aren’t my strong suit. This has some very useful ones for those of us that aren’t as regex inclined. [...]
[...] » Čítať ďalej originálny článok Komentáre (0) k článku “15 PHP Regular Expressions For Web Developers” [...]
Can any one please help me to solve my problem?
I have more than one label tags () with same class name but different id in my template file.
Ex:
I am here
Asking for help
like this.
The data given is only the class name.(Here in the example class name is “user_home_tpl_html”)
The pattern of the value of the id attribute is id with an integer.(such as id1,id2….id200…id333)
Now I need the regular expression to get the content of the label tag
(Here in the example
1: I am here
2: Asking for help
)
I’ll be obliged if anybody will be interested to help me
for the record: document.images fits best if you need to have all images. It is way faster than using regexes.
the example on this page only fits if you want to retrieve all images from a different page than the one that is currently loaded
That is really useful! Many thanks!
Practice REGEX by running this PHP snippet
CUT-PASTE-RUN
————————-
<?php
echo '’;
echo ‘Enter sample straing: ‘;
echo ‘Enter match pattern: ‘;
echo ”;
echo ”;
if($_POST)
{
$string = $_POST['sampleString'];
$cclass = $_POST['matchPattern'];
}
if(preg_match(“/$cclass/”,$string))
{
echo ‘Old string: ‘.$string.”;
echo ‘Match pattern: ‘.$cclass.”;
$string = preg_replace(“/$cclass/”,’*',$string);
echo ‘New string: ‘.$string.”;
}
else
echo ‘No match’;
?>
So helpful! I’ve tried a few and they work really well.
I got to show off my knowledge in class because of your post. Now people think I’m a PHP God!
Thanks for the post. Very useful.
A little fix, maybe: ‘/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i’
“://” => “:\/\/” (requires escaping
in the end )?/?/i
should be: ?/i
so: ‘/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/i’
above produces no error.
Thanks for the useful post, once again!
Hello,
Very nice post, it helped us to give example for starter . I have used your post as example for those who want to get first glimpse of regex in PHP.
Hi,
I got some code that i would like to locate and replace certain text that determine width and height of a youtube video programmatically. I got this youtube code:
I would like to locate all instances of width and height and change these to lets say (height=200 and width=”400″) so the code would read like this:
Any assistance would be greatly appreciated.
Use this for domain name with port path and query to verify it.
$hostRegex = “([a-z\d][-a-z\d]*[a-z\d]\.)*[a-z][-a-z\d]*[a-z]“;
$portRegex = “(:\d{1,})?”;
$pathRegex = “(\/[^?#\"\s]+)?”;
$queryRegex = “(\?[^#\"\s]+)?”;
$urlRegex = “/(?:(?<=^)|(?<=\s))((ht|f)tps?:\/\/" . $hostRegex . $portRegex . $pathRegex . $queryRegex . ")/";
Good tips. I’ve still got a long way to go, but I’ve finally decided PHP is the language for me. Fingers crossed within a few months I’ll understand what all of these mean better! Tom
(gif|jpg) Matches either “gif” or “jpeg”
this does not match jpeg, it will match gif or jpg. just a little typo i guess.
what if I want to store (save) all the title and links from the first page in a file (test_google.csv) when I search on google the word “test” ? How should I write the condition and the preg_match_all.
this is how I extract and post the data:
$curl = new Curl (true, “cookieFile.txt”);
$googlePage = $curl -> get(“http://…………”);
print $googlePage; die ();
Great article!! To the point! Every other article I find to try and understand regex STILL makes it sooo hard!
this is cool. thanks dude.
Great article but for HTML or XML, i really prefer DomDocument.. Easier and more dedicated.
S.
I want to check whether the string contains only numbers or not. Like verifying the mobile number.
what will be the code snippet?
How to extract ” 4 Valid 10-digit number(s) are recorded!! ” form string “ pls help
Great function “Matching an XHTML/XML tag with a certain attribute value”
In my case i had to retouch the return by this return $matches[3][0];
Adding [0] because I wanted the string.
I used like this and worked!
$contents = file_get_contents(‘http://site.com/page.php’);
echo get_tag(‘id’, ‘spamID1, $contents, ‘span’);
I wanted to use preg_split() and test for either a / or a – or a .
$splitDate= preg_split(‘[/-.]‘, $mydate);
I will not work, it will only work with ONE arguement
$splitDate= preg_split(‘[/]‘, $mydate);
$splitDate= preg_split(‘[-]‘, $mydate);
$splitDate= preg_split(‘[.]‘, $mydate);
why is this? any answers gratefuilly recieved.
Boy, what a wonderfull post this was for me!!!
Thanks a lot for the explanation and for the code examples!!!
and best regards to you!
Virneto