scriptygoddess

12 Mar, 2003

PHP Command Prompt Part II – Regular Expressions

Posted by: dave In: Admin-type scripts

How often has it happened that you have a few hundred pages, with something that needs to be changed on each page? Luckily, PHP >= 4.2.0 ships with PCRE enabled by default, opening up the power of regular expressions to PHP scripters.

I'm not going to give a primer on REs (Regular Expressions), but if you don't know about them you should really sit right down & teach yourself. O'Reilly has an excellent book on them, and the program Visual REGEXP (search Freshmeat) is a great learning tool.

If you need help on running PHP from the command prompt, see my earlier post on the topic.

Here's the setup:

The situation:
I have 100 old web pages where I want to replace all the font tags with a standard one. (Yes, this is why you should use CSS) This is a bit simplified, but you should easily be able to extend this script to replace only the "face" attribute for example.

The Script:

$dirpath="/usr/wget/dev/";

$pattern="/<\s*font[^>]*>/";
$replace="<font face=\"Verdana\" size=\"2\"&glt";

if ($handle = opendir($dirpath)) {
while (false !== ($file = readdir($handle))) {
if (is_file($file) && fnmatch("*html", $file)) {
$lines = file($file);
foreach ($lines as $line_num => $lines ) {
echo "$file\n";
echo "Old:$lines\n";
$lines=preg_replace($pattern, $replace, $lines);
echo "New:$lines\n";
}
}
}
closedir($handle);
}

The important lines are $pattern, $replace & the preg_replace function. I've left out writing it back to a file to save space.

$pattern is a RE matching all tags with "font" in them, and grabbing the entire tag.
$replace is obviously what I want to replace the old font tags with.
The preg_replace function does all the work, matching the pattern to the string $lines & if its a match, replacing with $replace. If there is no match, no replacement is made.

Again, you can easily leverage your knowledge of PHP to write some simple administrative scripts to make your life easier…

1 Response to "PHP Command Prompt Part II – Regular Expressions"

1 | Shashank

June 3rd, 2003 at 11:22 pm

Avatar

Actually, if you have perl on your shell, you can do this with a single command..

More on this —
http://www.faqts.com/knowledge_base/view.phtml/aid/21091

Interesting article btw for those interested in PHP..

Shanx

Featured Sponsors

Genesis Framework for WordPress

Advertise Here


  • Scott: Just moved changed the site URL as WP's installed in a subfolder. Cookie clearance worked for me. Thanks!
  • Stephen Lareau: Hi great blog thanks. Just thought I would add that it helps to put target = like this:1-800-555-1212 and
  • Cord Blomquist: Jennifer, you may want to check out tp2wp.com, a new service my company just launched that converts TypePad and Movable Type export files into WordPre

About


Advertisements