Download - Class 5 - PHP Strings

Transcript
Page 1: Class 5 - PHP Strings

PHP Strings

Page 2: Class 5 - PHP Strings

Outline

Page 3: Class 5 - PHP Strings

What are Strings ?

• A string is a series of characters.• Can contain any arbitrary number of characters, the only

limit is the memory limit.

Page 4: Class 5 - PHP Strings

Ways To Write a String

Page 5: Class 5 - PHP Strings

Escaping characters

• Escaping is done using the backslash “\” character : $x = “He said \“I’m a developer\” ”;

$e = ‘He said ”I\’m a developer” ’;

$d = “ $z ”; // $d has the value of the variable $z

$r = “ \$z ”; // r has the value: $z

Page 6: Class 5 - PHP Strings

Special characters

• The most frequently used special characters we have are :

o \n : linefeed o \t : the tab ( a number of spaces )

• We can only output these characters in double quoted and heredoc strings.

• echo “Hi\n PHP”; // prints “Hi” then “PHP” in the next line

• echo ‘Hi \n PHP’; // prints “Hi \n PHP”

Page 7: Class 5 - PHP Strings

Curly syntax

• In double quoted and heredoc strings, you can have the following :

$x[10] = “great”;$x[‘name’] = “strings”;

$y = “ This is {$x[10]} ”; // This is great$z = “ {$x[‘name’]} are flexible.”; // strings are flexible.

Page 8: Class 5 - PHP Strings

Accessing characters

• Strings can be accessed like arrays to get a specific character :

$x = “String”;

echo $x[0]; // Secho $x[1]; // techo $x[2]; // r

Page 9: Class 5 - PHP Strings

String Operations

• Concatenation operator “.”:

$x = “Hello ” . “ world”; // Hello world

• Concatenating assignment operator :

$x = “Hello ”;$x .= “world” // Hello world

Page 10: Class 5 - PHP Strings

String Comparison

1. Can compare strings using “==“ operator :

if( $x == “Hi” )echo “yes”;

1. Can use strcmp() built-in function :

if( strcmp( $x, “Hi”) == 0 )echo “yes”;

1. Use strcasecmp() for case insensitive comparisons :

if( strcasecmp( “hi”, “Hi”) == 0 )echo “yes”;

Page 11: Class 5 - PHP Strings

String Length

The function strlen() returns the length of the string:

Example:

echo strlen( “A string” ); // 8

Page 12: Class 5 - PHP Strings

Searching Strings

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

Returns the numeric position of the first occurrence of needle in the haystack string.

Example:

$mystring = 'abc';$findme = 'a';$pos = strpos($mystring, $findme); // 0

Page 13: Class 5 - PHP Strings

Replacing Strings

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

This function returns a string or an array with all occurrences of search in subject replaced with the given replace value.

Example:

echo str_replace( “Hi”, “Hello”, “Hi strings.” ); // Hello strings.

Page 14: Class 5 - PHP Strings

Extracting Strings

string substr ( string $string , int $start [, int $length ] )

Returns the portion of string specified by the start and length parameters.

Example :

echo substr('abcdef', 1); // bcdef echo substr('abcdef', 1, 3); // bcdecho substr('abcdef', 0, 4); // abcdecho substr('abcdef', 0, 8); // abcdefecho substr('abcdef', -1, 1); // f

Page 15: Class 5 - PHP Strings

Splitting Strings

array explode ( string $delimiter , string $string [, int $limit ])

Returns an array of strings, each of which is a substring of string formed by splitting it on boundaries formed by the string delimiter.

Example :

$string = “this is a string";$pieces = explode(" ", $string);var_dump($pieces); // prints an array containing the parts

Page 16: Class 5 - PHP Strings

Joining Strings

string implode ( string $glue , array $pieces )

Join array elements with a glue string.

Example :

$array = array( “this”, “is”, “a”, “string” );$string= implode(" ", $array);echo $string; // this is a string

Page 17: Class 5 - PHP Strings

Exercise

Write a PHP function that reverses the string words, so If we have a string like this :

this is the php strings lesson

The function should return this :

lesson strings php the is this

Page 18: Class 5 - PHP Strings

Exercise solution

<?phpfunction reverse_words($string){ $result = ""; $exploded = explode(" ", $string); $reversed = array_reverse($exploded); $result = implode(" ", $reversed); return $result;}reverse_words( "this is the php strings lesson" );

?>

Page 19: Class 5 - PHP Strings

Formatting Strings

string number_format ( float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',' )

This function formats a number according to the passed arguments.Example :

$number = 1234.5678;

$english_format_number = number_format($number, 2, '.', ''); // 1234.57

Page 20: Class 5 - PHP Strings

Formatting Strings

string sprintf ( string $format [, mixed $args [, mixed $... ]] )

Returns a string produced according to the formatting string format.

Exampleprintf(“My name is %s and my age is %d", “John”, 20 ); //

My name is John and my age is 20

For a complete list of details, visit : http://php.net/manual/en/function.sprintf.php

Page 21: Class 5 - PHP Strings

Regular Expressions

• Regular expressions ( Regex ) provide flexible means for matching strings of text.

• For example :How can I check whether the user supplied a valid e-mail or not ?

• There should be something that tells :Is the string like some characters/digits then @ then some characters/digits then .com ??? Here comes the regex.

Page 22: Class 5 - PHP Strings

Meta CharactersMeta characters are characters the have some special meanings in the regex pattern.

Character Description

\ general escape character with several uses

^ assert start of subject (or line, in multiline mode)

$ assert end of subject (or line, in multiline mode)

. match any character except newline (by default)

[ start character class definition

] End character class definition

| start of alternative branch

( Start of sub pattern

) End of sub pattern

Page 23: Class 5 - PHP Strings

Meta Characters

Character Description

? 0 or 1

* 0 or more

+ 1 or more

{ Start min/max number of occurrences

} End min/max number of occurrences

^ negate the class, but only if it is the first character

- Character range

Page 24: Class 5 - PHP Strings

Character Classes

Character classes define the type of characters in the regex pattern.

Class Description

\d Matches any numeric character - same as [0-9]

\D Matches any non-numeric character - same as [^0-9]

\s Matches any whitespace character - same as [ \t\n\r\f\v]

\S Matches any non-whitespace character - same as [^ \t\n\r\f\v]

\w Matches any alphanumeric character - same as [a-zA-Z0-9_]

\W Matches any non-alphanumeric character - same as [^a-zA-Z0-9_]

Page 25: Class 5 - PHP Strings

Regex ExamplesRegular

expression (pattern)

Match (Subject ) Not match Comment

world Hello world Hello JimMatch if the pattern is present anywhere in the subject

^world world class Hello worldMatch if the pattern is present at the beginning of the subject

world$ Hello world world classMatch if the pattern is present at the end of the subject

/world/i This WoRLd Hello Jim Makes a search in case insensitive mode

^world$ world Hello world The string contains only the "world"

world* worl, world, worlddd wor There is 0 or more "d" after "worl"

world+ world, worlddd worl There is at least 1 "d" after "worl"

Page 26: Class 5 - PHP Strings

Regex ExamplesRegular

expression (pattern)

Match (Subject ) Not match Comment

world? worl, world, worly wor, wory There is 0 or 1 "d" after "worl"

world{1} world worly There is 1 "d" after "worl"

world{1,} world, worlddd worly There is 1 ore more "d" after "worl"

world{2,3} worldd, worlddd world There are 2 or 3 "d" after "worl"

wo(rld)* wo, world, worldold wa There is 0 or more "rld" after "wo"

earth|world earth, world sun The string contains the "earth" or the "world"

Page 27: Class 5 - PHP Strings

Regex ExamplesRegular

expression (pattern)

Match (Subject ) Not match Comment

w.rld world, wwrld wrld Any character in place of the dot.

^.{5}$ world, earth sun A string with exactly 5 characters

[abc] abc, bbaccc sun There is an "a" or "b" or "c" in the string

[a-z] world WORLD There are any lowercase letter in the string

[a-zA-Z] world, WORLD, Worl12 123

There are any lower- or uppercase letter in the string

[^wW] earth w, W The actual character can not be a "w" or "W"

Page 28: Class 5 - PHP Strings

Regex Functions

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

Searches subject for a match to the regular expression given in pattern. It will stop by the first occurrence of the pattern.

Example:

$x = preg_match( “/php*/”, “phpppp”, $result ); // returns 1var_dump($result); // array(1) { [0]=> string(6) "phpppp" }

Page 29: Class 5 - PHP Strings

Regex Functions

int preg_match_all ( string $pattern , string $subject , array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]] )

Searches subject for a match to the regular expression given in pattern. It gets all the occurrences of the pattern in the string.

Example:

$x = preg_match_all( “/php/”, “phpp phpzz”, $result ); // returns 1

var_dump($result); // array(1) { [0]=> array(2) { [0]=> string(3) "php" [1]=> string(3) "php" } }

Page 30: Class 5 - PHP Strings

Regex Functions

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

Searches subject for matches to pattern and replaces them with replacement.

Example:

$x = preg_replace( “/php*/”, “hi” ,“phpp phppz”);

echo $x ; // hi hiz

Page 31: Class 5 - PHP Strings

Exercise

Write a PHP snippet that checks whether the user has entered a valid email or not ( the email should end with a .com ).

Page 32: Class 5 - PHP Strings

Exercise Solution

<?php

$email = "[email protected]";

if(preg_match("/[\w]+@[\w]+\.com/", $email) == 1 ) echo "Valid email";else echo "Invalid email";

?>

Page 33: Class 5 - PHP Strings

More info about Regex

For more info about regular expressions, please visit :

http://www.php.net/manual/en/reference.pcre.pattern.syntax.php

Page 34: Class 5 - PHP Strings

Assignment

1- Write a function that calculates the number of the words a string has.

2- Write a PHP script that matches the following phone numbers :

718 498 1043718 198-1043

Page 35: Class 5 - PHP Strings

What's Next?• Web Programming.

Page 36: Class 5 - PHP Strings

Questions?