2010-03-26 14 views
6

Que asuma que el cuerpo es igual a $preg_replace: modificador desconocido

something 
that 
does 
not 
interest 
me 
<!-- start --> 
some 
html 
code 
<!-- end --> 
something 
that 
does 
not 
interest 
me 

Si uso

$body=preg_replace("(.*)<!-- start -->(.*)<!-- end -->(.*)","$2",$body); 

Obtengo:

Warning: preg_replace() [function.preg-replace]: Unknown modifier '<' 

¿Cómo he de corregir?

+3

Probablemente sería más fácil conseguir la posición de comenzar * * y la posición del extremo * * con 'strpos' y luego solo la parte entre estas posiciones con 'substr'. – Gumbo

Respuesta

17

Un patrón preg necesita un par de caracteres que delimitan el patrón mismo. Aquí su patrón está encerrado en el primer par de paréntesis y todo lo demás está afuera.

Prueba esto:

$body=preg_replace("/(.*)<!-- start -->(.*)<!-- end -->(.*)/","$2",$body); 

esto es sólo acerca de la sintaxis, no hay garantía sobre el patrón en sí, que parece sospechoso.

EDIT:

asumiendo el texto en su ejemplo:

preg_match('#<!-- start -->(.*?)<!-- end -->#s', $text, $match); 
$inner_text = trim($match[1]); 
+0

reemplazando "" con "$ 2" resuelve el problema. Todavía tengo una pregunta, ¿usará $ 2 afectará a cualquier otra área? – Vinith

3

Prueba esto:

$body = preg_replace("/(.*)<!-- start -->(.*)<!-- end -->(.*)/","$2",$body);