suche nach in der

preg_replace_callback> <preg_match
Last updated: Fri, 18 May 2012

view this page in

preg_quote

(PHP 4, PHP 5)

preg_quoteMaskiert Zeichen regulärer Ausdrücke

Beschreibung

string preg_quote ( string $str [, string $delimiter = NULL ] )

preg_quote() setzt einen Backslash vor jedes Zeichen von str, das zur Syntax eines regulären Ausdrucks gehört. Das ist nützlich, wenn Sie einen Text nach Übereinstimmungen mit einer zur Laufzeit erzeugten Zeichenkette durchsuchen müssen, die spezielle RegEx-Zeichen enthalten könnte.

Spezielle Zeichen regulärer Ausdrücke sind: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

Parameter-Liste

str

Die zu durchsuchende Zeichenkette

delimiter

Falls der optionale delimiter angegeben wurde, wird dieser ebenfalls maskiert. Das ist nützlich, um den Begrenzer zu maskieren, der von den PCRE-Funktionen benötigt wird. Der / ist der am häufigsten verwendete Begrenzer.

Rückgabewerte

Gibt die maskierte Zeichenkette zurück.

Changelog

Version Beschreibung
5.3.0 Das Zeichen - wird nun maskiert.

Beispiele

Beispiel #1 preg_quote()-Beispiel

<?php
$schluesselwoerter 
'$40 für einen G3/400';
$schluesselwoerter preg_quote($schluesselwoerter'/');
echo 
$schluesselwoerter// liefert \$40 für einen G3\/400
?>

Beispiel #2 Kursivdruck eines Wortes in einem Text

<?php
// In diesem Beispiel wird preg_quote($wort) verwendet, damit die
// Asterisks (*) für den regulären Ausdruck keine spezielle Bedeutung haben.

$text "Dieses Buch ist *sehr* schwer zu finden.";
$wort "*sehr*";
$text preg_replace ("/" preg_quote($wort) . "/",
                          
"<i>" $wort "</i>",
                          
$text);
?>

Anmerkungen

Hinweis: Diese Funktion ist binary safe.



add a note add a note User Contributed Notes
preg_quote
chad
04-Dec-2006 11:03
If you are placing your quoted string within []'s, make sure you also escape the dash (-) character manually.

preg_match("/^[A-Za-z\d" . preg_quote('!@#$%^&*()-_=+\|[]{};:/?.><', '/') . "]{8,32}$/", $password)

The above will try to match the characters ')' through '_' whatever those are. So use the below expression:

preg_match("/^[A-Za-z\d" . preg_quote('!@#$%^&*()_=+\|[]{};:/?.><', '/') . "\-]{8,32}$/", $password)

Yes, I know I can use \w in place of A-Za-z, but I wanted to illustrate my point better :)
mina86 at tlen dot pl
26-Dec-2003 12:02
Re: adrian holovaty
You must also escape '#' character. Next thing is that there is more then one whitespace character (a space).. Also IMO the name preg_quote_white() won't tell what the new function does so we could rename it. And finally, we should also add $delimiter:

<?php
function preg_xquote($a, $delimiter = null) {
     if (
$delimiter) {
          return
preg_replace('/[\s#]/', '\\\0', preg_quote($a, substr("$delimiter", 0, 1)));
     } else {
          return
preg_replace('/[\s#]/', '\\\0', preg_quote($a));
     }
}
?>
adrian holovaty
16-Jul-2003 02:12
Note that if you've used the "x" pattern modifier in your regex, you'll want to make sure you escape any whitespace in your string that you *want* the pattern to match.

A simplistic example:

$phrase = 'a test'; // note the space
$textbody = 'this is a test';

// Does not match:
preg_match('/' . preg_quote($phrase) . '$/x', $textbody);

function preg_quote_white($a) {
     $a = preg_quote($a);
     $a = str_replace(' ', '\ ', $a);
     return $a;
}

// Does match:
preg_match('/' . preg_quote_white($phrase) . '$/x', $textbody);

preg_replace_callback> <preg_match
Last updated: Fri, 18 May 2012