0
我有一個PHP函數用於將換行符轉換爲段落,但忽略已包含在h,ul,ol或li標記中的任何行。這工作正常,除非這個字符串如下:在php函數中用段落標記替換換行符的錯誤
<h1>lkjhlkjkl</h1>
hgjk
<ul>
<li>hjgkghjk</li></ul>
ghjkghj
呈現如下:
<h1>lkjhlkjkl</h1><p>hgjk</p><ul><li>hjgkghjk</li></ul><p>ghjkghj</p>
但如果收盤UL標籤是在單獨一行它呈現了以下結果:
<h1>lkjhlkjkl</h1><p>hgjk</p><ul><li>hjgkghjk</li><p></ul><p>ghjkghj</p>
在關閉前放置ap標籤ul
這裏的PHP:
<?php
function format_html($content)
{
$content = preg_replace("/<(h[1-6]|ul|ol|li)>\n/", "<$1>", $content);
$content = preg_replace("/<\/(h[1-6]|ul|ol|li)>\n/", "</$1><p>", $content);
$content = "<p>" . str_replace("\n", "</p><p>", $content);
$content = preg_replace("/<p><(h[1-6]|ul|ol|li)>/", "<$1>", $content);
return $content;
}
function format_html_end($content)
{
$content = preg_replace("/<\/(h[1-6]|ul|ol|li)><\/p>/", "</$1>", $content);
return $content;
}
echo format_html_end(format_html("$content</p>"));
?>
任何想法如何防止這種小蟲子?
如果該行以一個強標記開始會怎樣?這就是爲什麼我指定要應用它的標籤。 – Tom 2012-04-16 15:29:55