Necesito usar la función nl2br en el contenido de la página que proviene de DB. Pero la etiqueta <br /> también se agregó al contenido de javascript.
<script type="text/javascript"><br /> let test = "test";<br /> let menu = "menu";<br /> </script>En primer lugar, para agregar br a todo el contenido y luego eliminar br del contenido de javascript, probé esto:
<?php //content coming from db $content = nl2br($content); $content = preg_replace("/<script\b[^>]*>([\s\S]*?)<\/script\b[^>]*>/m", str_replace("<br />", "", nl2br($content)), $content); echo $content; ?>Resultado: br no se agregó a javascript, pero javascript y el contenido de texto llegaron dos veces (br no funcionó en el primer contenido de texto, pero funcionó en el segundo contenido de texto)
¿Cómo puedo excluir br en código javascript?
Asumiendo que sus suites de expresiones regulares son lo que necesita, puede usar preg_replace_callback para lograr lo que desea.
//content coming from db $content = preg_replace_callback("/<script\b[^>]*>([\s\S]*?)<\/script\b[^>]*>/m",function($matches){return str_replace('<br />','',$matches[0]);},nl2br($content));