Lecture 11 Log into Linux, also log into csserver Reminder: Project - - PowerPoint PPT Presentation

lecture 11
SMART_READER_LITE
LIVE PREVIEW

Lecture 11 Log into Linux, also log into csserver Reminder: Project - - PowerPoint PPT Presentation

Lecture 11 Log into Linux, also log into csserver Reminder: Project 3 due next Tuesday Questions? Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 1 Outline More PHP Remote files Directory operations


slide-1
SLIDE 1

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 1

Lecture 11

 Log into Linux, also log into csserver  Reminder: Project 3 due next Tuesday  Questions?

slide-2
SLIDE 2

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 2

Outline

 More PHP  Remote files  Directory operations  Functions  Variable scope  Interacting with the OS  Regular expression matching and

substitution

slide-3
SLIDE 3

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 3

Remote Files

 Since PHP was designed for use with web

servers, the fopen( ) command can be used to access remote files by giving a URL instead of a local file name.

$slash = fopen("http://www.slashdot.org", "rt"); $site = fread($slash, 200000); // 1st 200K bytes fclose($slash); print $site;

slide-4
SLIDE 4

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 4

Directory Operations

 PHP directory operations are similar to C:

  • pendir( ), readdir( ), and closedir( ).

$handle = opendir ("."); // current dir if ($handle) { // check that open succeeded while (false !== ($filename = readdir($handle))){ if ($filename != "." && $filename != "..") print "$file\n"; } closedir ($handle); }

 The use of !== (not identical to) is to handle the

possibility that a directory entry name evaluates to false.

slide-5
SLIDE 5

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 5

Directory Operations

 Other directory operations include:

 mkdir ( ) - create a directory  rmdir ( ) - remove an empty directory  get_cwd ( ) - get the current working directory  chdir ( ) - change directories

slide-6
SLIDE 6

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 6

Functions

 PHP functions are defined as in C++ without

the types using the function keyword. Has both value and reference parameters.

function foo ($arg1, &$arg2) { $result = ...; // local variable ... return $result; }

 Function definitions can appear anywhere in

the script.

slide-7
SLIDE 7

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 7

Default Parameters

 PHP has default parameters

function doHello ($name = "Mary") { return "Hello $name!"; } doHello(); // "Hello Mary!" doHello("John"); // "Hello John!"

slide-8
SLIDE 8

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 8

Variable Arguments

 A PHP function may be called with more arguments

than listed in its header. The extra arguments can be accessed using functions func_num_args( ), func_get_arg( ), and func_get_args( ).

function someFunc ($a) { for ($i = 0; $i < func_num_args(); ++$i) { $param = func_get_arg($i); print "Received parameter $i: $param\n"; } $params = func_get_args(); $paramlist = implode(",", $params); print "Received parameters: $paramlist\n"; } someFunc (5,4,3,2,1);

slide-9
SLIDE 9

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 9

Variable Scope

 In PHP, any variable not set inside a function is

considered global. That is, they are accessible from anywhere else in the script, except inside a function.

 In particular, this means that variables span any

code islands in the script

 Variables set inside functions are local to that

function.

slide-10
SLIDE 10

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 10

Superglobal Variables

 Special variables like $_SERVER are called

superglobals, since they are accessible anywhere, including inside functions.

 $GLOBALS is a superglobal associative array

that gives access to any global variable. The name of the variable is the index.

slide-11
SLIDE 11

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 11

Scope Examples

$bar = "baz"; print "global \$bar is: $bar\n"; // baz foo1(); print "global \$bar is: $bar\n"; // baz print "global \$foo is: $foo\n"; // null foo2(); print "global \$bar is: $bar\n"; // wombat function foo1 () { print "local \$bar is: $bar\n"; // null $foo = "foo"; print "local \$foo is: $foo\n"; // foo } function foo2 () { $GLOBALS['bar'] = "wombat"; }

slide-12
SLIDE 12

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 12

Interacting with the OS

 Backticks (`) can be used to run external

commands, including using redirection or pipes .

$cwd = `pwd`; print "Current directory is $cwd\n"; print "The files in the directory:\n"; print `ls`;

slide-13
SLIDE 13

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 13

Regular Expression Matching

 When the basic string operations are not

enough, PHP provides regular expression (regexp) matching. The basic regexp function is preg_match( ) that has two parameters, the pattern to match and the string to match it

  • against. It returns true after the first match;

false if there is no match.

 Regexps are formed by starting and ending

with a (forward) slash. E.g., "/php/"

slide-14
SLIDE 14

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 14

Regexp Special Characters

 The special characters used to form regexps

are similar to those used in shell globbing or grep.

\ De-special the next character | Alternation (or) () Group [] A character class ^ Match at beginning of string $ Match at end of string . Match any one character, except \n

slide-15
SLIDE 15

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 15

Regexp Quantifiers

 Quantifiers indicate how many times the

preceding item should match.

* Match 0 or more times + Match 1 or more times ? Match 0 or 1 times {COUNT} Match exactly COUNT times {MIN,} Match at least MIN times {MIN,MAX} Match between MIN and MAX times

slide-16
SLIDE 16

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 16

Regexp Examples

 Here are some regexp examples:

"/Gandalf|Saruman/" # Match either "/pro(b|r)ate/" # probate or prorate "/\..$/" # file.a, xxx.b, etc at end "/could(n't)?/" # Match could or couldn't "/^ba(na)*/" # At start: ba,bana,... "/ba(na){2}/" # banana

slide-17
SLIDE 17

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 17

Regexp Modifiers

 A regular expression can be followed by

modifiers that affect the way matches are computed.

 Common modifiers include

i Case insensitive m Let ^ and $ match next to embedded \n

slide-18
SLIDE 18

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 18

Modifier Examples

preg_match("/php/", "php"); // true preg_match("/php/", "PHP"); // false preg_match("/php/i", "PHP"); // true preg_match("/Php/i", "PHP"); // true $multiline = "This is\na long test\nto see whether\nthe dollar\nSymbol\nand the\ncaret\nwork as planned"; preg_match("/is$/", $multiline); // false preg_match("/is$/m", $multiline); // true

slide-19
SLIDE 19

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 19

Regexp Symbols

 There are special symbols that can be used

inside regular expressions. Most common ones:

\b Match word boundary \B Match non-word boundary \s Match any whitespace \S Match any non-whitespace \A Match string beginning (^) \Z Match string end ($)

 The last two are used with multi-line strings ('m'

modifier) where ^ and $ will match each line rather than the whole string.

slide-20
SLIDE 20

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 20

Regular Expression Substitution

 The function to use regexps to identify text to

be replaced is preg_replace( ), which takes 3 arguments, the regexp, the replacement string, and the string to work with. It returns a string with the matches replaced.

 The replacement string can contain $n to refer

to the match of subpattern n of the regexp rule. $0 refers to the entire matched text.

slide-21
SLIDE 21

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 21

Substitution Examples

$a = "Foo moo boo tool foo"; $b = preg_replace("/[A-Za-z]oo\b/", "Got word: $0\n", $a); print $b; // Output: // Got word: Foo // Got word: moo // Got word: boo // tool Got word: foo $match = "/the (car|cat) sat on the (drive|mat)/"; $input = "the cat sat on the mat"; print preg_replace($match, "Matched $0, $1, and $2\n", $input); // Output: Matched the cat sat on the mat, cat, and mat

slide-22
SLIDE 22

Thursday, September 30 CS 375 UNIX System Programming - Lecture 11 22

In-class Exercise

 Write a PHP program that tests whether or not

an argument is a valid phone number (based

  • n its format) and print an appropriate

message.

 The following should be considered valid phone

numbers: (123)456-7890, 123-456-7890, (123)4567890, 123 456 7890, 123.456.7890, 1234567890, etc.