fix a few issues with code blocks, ignore tags within blocks, fold multi-line blocks to one, also turn html br into two LFs.

This commit is contained in:
Friendika 2011-01-23 16:29:30 -08:00
parent 1460fc0d71
commit 00d2b58358
4 changed files with 24 additions and 2 deletions

View file

@ -1687,6 +1687,11 @@ function activity_match($haystack,$needle) {
if(! function_exists('get_tags')) { if(! function_exists('get_tags')) {
function get_tags($s) { function get_tags($s) {
$ret = array(); $ret = array();
// ignore anything in a code block
$s = preg_replace('/\[code\](.*?)\[\/code\]/sm','',$s);
if(preg_match_all('/([@#][^ \x0D\x0A,:?]*)([ \x0D\x0A,:?]|$)/',$s,$match)) { if(preg_match_all('/([@#][^ \x0D\x0A,:?]*)([ \x0D\x0A,:?]|$)/',$s,$match)) {
foreach($match[1] as $match) { foreach($match[1] as $match) {
if(strstr($match,"]")) { if(strstr($match,"]")) {

View file

@ -165,7 +165,11 @@ function item_post(&$a) {
} }
} }
/**
* Fold multi-line [code] sequences
*/
$body = preg_replace('/\[\/code\]\s*\[code\]/m',"\n",$body);
/** /**
* Look for any tags and linkify them * Look for any tags and linkify them

View file

@ -64,8 +64,8 @@
rep(/<u>/gi,"[u]"); rep(/<u>/gi,"[u]");
rep(/<blockquote[^>]*>/gi,"[quote]"); rep(/<blockquote[^>]*>/gi,"[quote]");
rep(/<\/blockquote>/gi,"[/quote]"); rep(/<\/blockquote>/gi,"[/quote]");
rep(/<br \/>/gi,"\n"); rep(/<br \/>/gi,"\n\n");
rep(/<br\/>/gi,"\n"); rep(/<br\/>/gi,"\n\n");
rep(/<br>/gi,"\n"); rep(/<br>/gi,"\n");
rep(/<p>/gi,""); rep(/<p>/gi,"");
rep(/<\/p>/gi,"\n"); rep(/<\/p>/gi,"\n");
@ -98,6 +98,7 @@
rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>"); rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />"); rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<span style=\"color: $1;\">$2</span>"); rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<span style=\"color: $1;\">$2</span>");
// rep(/\[\/code\]\s*\[code\]/gi,"<br />"); // fold multiline code
rep(/\[code\](.*?)\[\/code\]/gi,"<code>$1</code>"); rep(/\[code\](.*?)\[\/code\]/gi,"<code>$1</code>");
rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<blockquote>$1</blockquote>"); rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<blockquote>$1</blockquote>");

View file

@ -18,6 +18,18 @@ del {color:red; text-decoration:line-through}
cite {border-bottom:1px dashed blue} cite {border-bottom:1px dashed blue}
acronym {border-bottom:1px dotted #CCC; cursor:help} acronym {border-bottom:1px dotted #CCC; cursor:help}
abbr {border-bottom:1px dashed #CCC; cursor:help} abbr {border-bottom:1px dashed #CCC; cursor:help}
code {
font-family: Courier, monospace;
white-space: pre;
display: block;
overflow: auto;
border: 1px solid #444;
background: #EEE;
color: #444;
padding: 10px;
margin-top: 20px;
}
/* IE */ /* IE */
* html body { * html body {