-> /Dev/Guidelines/CodeConventions


Understand the difference between single and double quotes. Use whichever is more appropriate.

2. Indentation

Indentation should follow the logical structure of the code. Use real tabs not spaces.

3. Difference between isset empty is_null

Comparison Table

TEST Not Set NULL Zero FALSE Numeric Value Empty String
isset() bool(false) bool(false) bool(true) bool(true) bool(true) bool(true)
empty() bool(true) bool(true) bool(true) bool(true) bool(false) bool(true)
is_null() bool(true) bool(true) bool(false) bool(false) bool(false) bool(false)
== bool(true) bool(true) bool(true) bool(true) bool(false) bool(true)
=== bool(false) bool(false) bool(false) bool(true) bool(false) bool(false)

3.1. isset($vars[1]) AND !empty($vars[1])

empty() is the opposite of (boolean) var, except that no warning is generated when the variable is not set.

Use simply !empty($vars[1]) here.

4. List of Parser Tokens

5. Pattern Modifiers

Special Sequences

    \w - Any “word” character (a-z 0-9 _)
    \W - Any non “word” character
    \s - Whitespace (space, tab CRLF)
    \S - Any non whitepsace character
    \d - Digits (0-9)
    \D - Any non digit character
    . - (Period) – Any character except newline

Meta Characters

    ^ - Start of subject (or line in multiline mode)
    $ - End of subject (or line in multiline mode)
    [ - Start character class definition
    ] - End character class definition
    | - Alternates, eg (a|b) matches a or b
    ( - Start subpattern
    ) - End subpattern
    \ - Escape character


    n* - Zero or more of n
    n+ - One or more of n
    n ? - Zero or one occurrences of n
    {n} - n occurrences exactly
    {n,} - At least n occurrences
    {,m} - At most m occurrences
    {n,m} - Between n and m occurrences (inclusive)

Pattern Modifiers

    i - Case Insensitive
    m - Multiline mode - ^ and $ match start and end of lines
    s - Dotall - . class includes newline
    x - Extended– comments and whitespace
    e - preg_replace only – enables evaluation of replacement as PHP code
    S - Extra analysis of pattern
    U - Pattern is ungreedy
    u - Pattern is treated as UTF-8

Point based assertions

    \b - Word boundary
    \B - Not a word boundary
    \A - Start of subject
    \Z - End of subject or newline at end
    \z - End of subject
    \G - First matching position in subject


    (?=) - Positive look ahead assertion foo(?=bar) matches foo when followed by bar
    (?!) - Negative look ahead assertion foo(?!bar) matches foo when not followed by bar
    (?<=) - Positive look behind assertion (?<=foo)bar matches bar when preceded by foo
    (? - Negative look behind assertion (?
    (?>) - Once-only subpatterns (?>\d+)bar Performance enhancing when bar not present
    (?(x)) - Conditional subpatterns
    (?(3)foo|fu)bar - Matches foo if 3rd subpattern has matched, fu if not
    (?#) - Comment (?# Pattern does x y or z)
PCRE2 Syntax
PCRE Pattern Modifiers
PCRE Pattern Syntax

Play and Test

  1. – Online regex tester and debugger


  1. Access modifiers

    var is deprecated in PHP 5 and public, protected and private) was introduced

    • public
      • Class members declared public can be accessed everywhere.
    • private
      • Members declared as private may only be accessed by the class that defines the member.
    • protected
      • Members declared protected can be accessed only within the class itself and by inherited and parent classes.

    WikiAdmin (14.04.2011 08:59) I'm not sure if we should introduce / use this concept.