tôi sử dụng nicEdit để ghi dữ liệu RTF trong CMS của tôi. Vấn đề là nó tạo ra chuỗi như thế này:php: thay thế đôi <br /> bằng</p><p>
hello first line<br><br />this is a second line<br />this is a 3rd line
vì đây là một trang web tin tức, tôi rất thích html thức là như thế này:
<p>hello first line</p><p>this is a second line<br />this is a 3rd line</p>
vì vậy giải pháp hiện tại của tôi là thế này:
- tôi cần phải cắt dữ liệu $ cho
<br />
lúc bắt đầu/kết thúc của chuỗi - thay thế tất cả các chuỗi có 2
<br/>
trở lên với</p><p>
(một đơn<br />
được cho phép). - cuối cùng, thêm
<p>
lúc bắt đầu và</p>
vào cuối
tôi chỉ có bước 1 và 3 cho đến nay. ai đó có thể cho tôi một bàn tay với bước 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;
}
cảm ơn!
ps: sẽ tốt hơn nếu bạn tránh các tình huống cụ thể. Ví dụ: "hello<br /><br /><br /><br /><br />too much space
" - những 5 breaklines cũng nên được chuyển đổi sang chỉ là một "</p><p>
"
giải pháp cuối cùng
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;
}
bạn là người đàn ông! hehe, preg_replace là cách hiệu quả nhất để làm điều này. cảm ơn! tôi phải học regexp tốt hơn hehe. – andufo
Điều gì về '
'? – Gumbo
cũng đang được xử lý khi áp dụng "?" trong regexp – andufo