GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Downloads
  • Documentation
  • Get Involved
  • Help
  • Getting Started
  • Introduction
  • A simple tutorial
  • Language Reference
  • Basic syntax
  • Types
  • Variables
  • Constants
  • Expressions
  • Operators

This view

  • Original page
  • New address

GeezerVison is showing www.php.net — PHP: preg_quote - Manual

PHP 8.6.0 RC5 available for testing
    preg_replace »
    « preg_match_all
    • Preface
    • Function Reference
    • Text Processing
    • PCRE
    • PCRE Functions

    preg_quote

    (PHP 4, PHP 5, PHP 7, PHP 8)

    preg_quote — Quote regular expression characters

    Description

    function preg_quote(string $str, ?string $delimiter = null): string

    preg_quote() takes str and puts a backslash in front of every character that is part of the regular expression syntax. This is useful if you have a run-time string that you need to match in some text and the string may contain special regex characters.

    The special regular expression characters are: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : - #

    Note that / is not a special regular expression character.

    Note:

    Note that preg_quote() is not meant to be applied to the $replacement string(s) of preg_replace() etc.

    Parameters

    str

    The input string.

    delimiter

    If the optional delimiter is specified, it will also be escaped. This is useful for escaping the delimiter that is required by the PCRE functions. The / is the most commonly used delimiter.

    Return Values

    Returns the quoted (escaped) string.

    Changelog

    Version Description
    7.3.0 The # character is now quoted
    7.2.0 delimiter is nullable now.

    Examples

    Example #1 preg_quote() example

    <?php
    $keywords = '$40 for a g3/400';
    $keywords = preg_quote($keywords, '/');
    echo $keywords; // returns \$40 for a g3\/400
    ?>

    Example #2 Italicizing a word within some text

    <?php
    // In this example, preg_quote($word) is used to keep the
    // asterisks from having special meaning to the regular
    // expression.
    
    $textbody = "This book is *very* difficult to find.";
    $word = "*very*";
    $textbody = preg_replace ("/" . preg_quote($word, '/') . "/",
                              "<i>" . $word . "</i>",
                              $textbody);
    ?>

    Notes

    Note:

    This function is binary-safe.

    See Also

    • PCRE Patterns
    • escapeshellcmd() - Escape shell metacharacters

    Found A Problem?

    Learn How To Improve This Page • Submit a Pull Request • Report a Bug
    +add a note

    User Contributed Notes 5 notes

    up
    down
    75
    Anonymous ¶
    18 years ago
    Wondering why your preg_replace fails, even if you have used preg_quote?
    
    Try adding the delimiter / - preg_quote($string, '/');
    up
    down
    15
    zooly ¶
    17 years ago
    To escape characters with special meaning, like: .-[]() and so on, use \Q and \E.
    
    For example:
    
    <?php echo ( preg_match('/^'.( $myvar = 'te.t' ).'$/i', 'test') ? 'match' : 'nomatch' ); ?>
    
    Will result in: match
    
    But:
    
    <?php echo ( preg_match('/^\Q'.( $myvar = 'te.t' ).'\E$/i', 'test') ? 'match' : 'nomatch' ); ?>
    
    Will result in: nomatch
    up
    down
    5
    ed at happysoftware dot com ¶
    7 years ago
    It should be noted that the forward slash is not escaped.  Since many regexes are surrounded by forward slashes, if you have one in your regex as  text you must escape it yourself otherwise it'll terminat the regex.
    up
    down
    4
    rwillmann at crooce dot com ¶
    9 years ago
    List of specials is incomplete:
    
    --- sample code ---
    
    $specials = '.\+*?[^]$(){}=!<>|:-';
    
    for ($i = 0; $i <= 255; $i++) {
    
        if (chr($i) !== preg_quote(chr($i))) {
    
            printf("Character 0x%02x quoted%s\n",
                   $i,
                   (strpos($specials, chr($i)) === FALSE) ? ' (+)' : '');
        } /* if */
    } /* for */
    
    --- sample code ---
    
    --- output ---
    
    Character 0x00 quoted (+)
    Character 0x21 quoted
    Character 0x24 quoted
    Character 0x28 quoted
    Character 0x29 quoted
    Character 0x2a quoted
    Character 0x2b quoted
    Character 0x2d quoted
    Character 0x2e quoted
    Character 0x3a quoted
    Character 0x3c quoted
    Character 0x3d quoted
    Character 0x3e quoted
    Character 0x3f quoted
    Character 0x5b quoted
    Character 0x5c quoted
    Character 0x5d quoted
    Character 0x5e quoted
    Character 0x7b quoted
    Character 0x7c quoted
    Character 0x7d quoted
    
    --- output ---
    up
    down
    1
    Anonymous ¶
    5 years ago
    I discovered that, in addition to escaping the special regular expression characters, preg_quote() encodes the NUL byte to its octal representation:
    
    <?php
    var_dump(preg_quote("\0"));
    ?>
    
    Output:
    
    string(4) "\000"
    +add a note
    • PCRE Functions
      • preg_​filter
      • preg_​grep
      • preg_​last_​error
      • preg_​last_​error_​msg
      • preg_​match
      • preg_​match_​all
      • preg_​quote
      • preg_​replace
      • preg_​replace_​callback
      • preg_​replace_​callback_​array
      • preg_​split
    You are visitor 01402503 — GeezerVison does not store the pages you look up.
    Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.