Regex da como resultado "El delimitador no debe ser alfanumérico o barra invertida" [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Delimiter no debe ser alfanumérico o barra invertida y preg_match 5 respuestas Solución de problemas "El delimitador no debe ser alfanumérico o barra invertida" al cambiar ereg () a preg_match () [duplicado] 2 respuestasTengo este código
function a($menu_item, $remove_link) {
$pattern = 'class="(.+)"(.+)<a.+>(.+)</a>';
if($remove_link) {
return preg_replace($pattern, 'class="$1 selected"$2$3', $menu_item); //<- line 6
}
return $menu_item;
}
Que básicamente comprueba si$remove_link
es verdadero, y luego elimina el enlace y agrega una definición de clase a$menu_item
Por ejemplo, si uso
$menu_item = '<li class="menuitem first"><a href="index.php">Home</a></li>';
$menu_item = a($menu_item, true);
Debería devolver
<li class="menuitem first selected">Home</li>;
La expresión regular se prueba y funciona en Notepad ++, pero mi función está dando este error:
Warning: preg_replace(): Delimiter must not be alphanumeric or backslash in functions.php on line 6
Vi que los patrones de php tienen que estar "delimitados" con barras, así que traté de usarclass="/(.+)"(.+)<a.+>(.+)/</a>
en cambio, pero da el mismo error.
¿Qué me estoy perdiendo? ¿Cómo uso los delimitadores correctamente?