uso nicEdit para escribir datos RTF en mi CMS. El problema es que genera cadenas como esta:php: reemplazar el doble <br /> con</p><p>
hello first line<br><br />this is a second line<br />this is a 3rd line
ya que este es un sitio de noticias, Prefiero el final de HTML que ser así:
<p>hello first line</p><p>this is a second line<br />this is a 3rd line</p>
así que mi solución actual es la siguiente:
- i necesidad de recortar los datos de $
<br />
en el inicio/final de la cadena - reemplazar todas las cadenas que tienen 2
<br/>
o más con</p><p>
(se permite una sola<br />
). - por último, añadir
<p>
al principio y al final</p>
sólo tengo los pasos 1 y 3 hasta el momento. ¿alguien puede ayudarme con el paso 2?
function replace_br($data) {
# step 1
$data = trim($data,'<p>');
$data = trim($data,'</p>');
$data = trim($data,'<br />');
# step 2 ???
// preg_replace() ?
# step 3
$data = '<p>'.$data.'</p>';
return $data;
}
gracias!
pd: sería incluso mejor evitar situaciones específicas. ejemplo: "hello<br /><br /><br /><br /><br />too much space
" - esas 5 líneas de rotura también deben ser convertidos a un solo "</p><p>
"
solución final
function sanitize_content($data) {
$data = strip_tags($data,'<p>,<br>,<img>,<a>,<strong>,<u>,<em>,<blockquote>,<ol>,<ul>,<li>,<span>');
$data = trim($data,'<p>');
$data = trim($data,'</p>');
$data = trim($data,'<br />');
$data = preg_replace('#(?:<br\s*/?>\s*?){2,}#','</p><p>',$data);
$data = '<p>'.$data.'</p>';
return $data;
}
eres el hombre! jeje, preg_replace es la forma más eficiente de hacer esto. ¡Gracias! Tengo que aprender regexp mejor jeje. – andufo
¿Qué pasa con '
'? – Gumbo
también se está cuidando al aplicar el "?" en la expresión regular – andufo