To prevent any problems, try to always use a delimiter that will *almost* not be used inside the regex, such as ` (back quote)
for example: instead of
<?php preg_match('/foo\/bar\//',$somevar); ?>
use
<?php preg_match('`foo/bar/`',$somevar); ?>
it's that simple! like this, you won't have to bother with delimiters anymore...
preg_quote
(PHP 4, PHP 5)
preg_quote — Escapar caracteres de expresiones regulares
Descripción
preg_quote() toma cadena y coloca una barra invertida al frente de cada caracter que es parte de la sintaxis de expresiones regulares. Esto resulta útil si usted tiene una cadena en tiempo de ejecución que necesita comparar con algún texto y la cadena puede contener caracteres especiales de expresiones regulares.
Los caracteres especiales de expresiones regulares son: . \ + * ? [ ^ ] $ ( ) { } = ! < > | :
Lista de parámetros
- cadena
-
La cadena de entrada.
- delimitador
-
Si el valor opcional delimitador es especificado, éste también será escapado. Esto es útil para escapar el delimitador que es requerido por las funciones PCRE. El caracter / es el delimitador usado con más frecuencia.
Valores retornados
Devuelve la cadena escapada.
Ejemplos
Example #1 Ejemplo de preg_quote()
<?php
$palabras_clave = '$40 para un g3/400';
$palabras_clave = preg_quote($palabras_clave, '/');
echo $palabras_clave; // devuelve \$40 para un g3\/400
?>
Example #2 Marcar una palabra en estilo cursivo al interior de un texto
<?php
// En este ejemplo, preg_quote($palabra) es usado para evitar que
// los asteriscos tengan un significado especial en la expresión
// regular.
$cuerpo_texto = "Este libro es *muy* difícil de encontrar.";
$palabra = "*muy*";
$cuerpo_texto = preg_replace ("/" . preg_quote($palabra) . "/",
"<i>" . $palabra . "</i>",
$cuerpo_texto);
?>
Notes
Note: Esta función es segura binariamente.
preg_quote
30-Jul-2008 09:10
26-Dec-2007 03:13
Wondering why your preg_replace fails, even if you have used preg_quote?
Try adding the delimiter / - preg_quote($string, '/');
