...

View Full Version : Regular Expressions



bcarl314
02-05-2003, 10:01 PM
I'm trying to use the preg_match function but can't get it to work right.

The variable $nFile will contain a string which is a path to a file pulled from a DB. (ex: ./docs/myfile.doc)

Since the file can either be a .doc or a .pdf, I want to check if its a .doc and make the header for the document application/msword and make it application/pdf otherwise.

My code is below.



if(preg_match("/*.doc/",$nFile)) {
print "DOC";
}
else {
print "NOT DOC";
}


it gives me this error message:
Warning: Compilation failed: nothing to repeat at offset 0 in c:\dreamweaver\chapters\shownewsletter.php on line 15

I've also tried


if(preg_match("/*.doc/",$nFile,$matches)) {
print "DOC";
}
else {
print "NOT DOC";
}


Any help, along with a better explaination than the documentation provided from php would be a great help.

Thanks

bcarl314
02-05-2003, 10:12 PM
Found it, missed the leading "."

Should be

preg_match("/.*.doc^/i",$nFile)

Thanks for letting me talk to myself.

Íkii
02-06-2003, 10:57 AM
on an aslant:

if you are only using .doc and .pdf, why not lose the slightly heavy regexing and just pull the last three chars?

$f_type = substr($nFile,-3);
if($f_type == 'doc') header("ummm doc");
else(..... == 'pdf') header.....

bcarl314
02-06-2003, 12:55 PM
In the future I will be allowing additional extensions, .html, .htm, .txt most of which will be 3 letters but some will be more. So my regex will actually be something like

$ext=".html";
$re="/.*.".$ext."^/";
if(preg_match($re, $nFile) {
//do something
}



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum