You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.7 KiB
88 lines
2.7 KiB
<?php |
|
|
|
function bbDecode($string) { |
|
|
|
$find = array( |
|
"'\[b\](.*?)\[/b\]'is", |
|
"'\[u\](.*?)\[/u\]'is", |
|
"'\[i\](.*?)\[/i\]'is", |
|
"'\[s\](.*?)\[/s\]'is", |
|
"'\[code\](.*?)\[/code\]'is", |
|
"'\[quote\](.*?)\[/quote\]'is", |
|
"'\[quote=(.*?)\](.*?)\[/quote\]'is", |
|
"'\[span=(.*?)\](.*?)\[/span\]'i", |
|
"'\[div=(.*?)\](.*?)\[/div\]'is", |
|
"'\[h\](.*?)\[/h\]'i", |
|
"'\[url\](.*?)\[/url\]'i", |
|
"'\[url=(.*?)\](.*?)\[/url\]'i", |
|
"'\[video\](.*?)\[/video\]'i", |
|
"'\[video width=(.*?) height=(.*?)\](.*?)\[/video\]'i", |
|
"'\[img\](.*?)\[/img\]'i", |
|
"'\[img title=(.*?) rel=(.*?)\](.*?)\[/img\]'i", |
|
"'\[img title=(.*?)\](.*?)\[/img\]'i", |
|
); |
|
|
|
$replace = array( |
|
"<strong>\\1</strong>", |
|
"<u>\\1</u>", |
|
"<i>\\1</i>", |
|
"<del>\\1</del>", |
|
"<pre>\\1</pre>", |
|
"<q>\\1</q>", |
|
"<q><span class=\"cite\">\\1 a écrit</span><br />\\2</q>", |
|
"<span class=\"\\1\">\\2</span>", |
|
"<div class=\"\\1\">\\2</div>", |
|
"<b>\\1</b><br />", |
|
"<a href=\"\\1\">\\1</a>", |
|
"<a href=\"\\1\">\\2</a>", |
|
"<object width=\"480\" height=\"387\" class=\"center\"><param name=\"movie\" value=\"\\1\"></param><embed src=\"\\1\" type=\"application/x-shockwave-flash\" width=\"480\" height=\"387\"></embed></object>", |
|
"<object width=\"\\1\" height=\"\\2\" class=\"center\"><param name=\"movie\" value=\"\\3\"></param><embed src=\"\\3\" type=\"application/x-shockwave-flash\" width=\"\\1\" height=\"\\2\"></embed></object>", |
|
"<a href=\"\\1\" rel=\"prettyPhoto\"><img src=\"\\1\" alt=\"\" /></a>", |
|
"<img class=\"illustration\" src=\"\\3\" alt=\"\\1\" />", |
|
"<img src=\"\\2\" alt=\"\\1\" />", |
|
); |
|
|
|
$string = makeLinks(preg_replace ($find, $replace, $string)); |
|
$string = nl2brPlus ($string); |
|
|
|
return $string; |
|
} |
|
|
|
// do nl2br except when in a <pre> tag |
|
function nl2brPlus($string) { |
|
$string = str_replace("\n", "<br />", $string); |
|
if(preg_match_all('/\<pre\>(.*?)\<\/pre\>/', $string, $match)){ |
|
foreach($match as $a){ |
|
foreach($a as $b){ |
|
$string = str_replace('<pre>'.$b.'</pre>', "<pre>".str_replace("<br />", "", $b)."</pre>", $string); |
|
} |
|
} |
|
} |
|
return $string; |
|
} |
|
|
|
# Transform URL and e-mails into links |
|
function makeLinks($string) { |
|
$string = preg_replace_callback('/\s(http|https|ftp):(\/\/){0,1}([^\"\s]*)/i','splitUri',$string); |
|
return $string; |
|
} |
|
|
|
# Split links, require for makeLinks |
|
function splitUri($matches) { |
|
$uri = $matches[1].':'.$matches[2].$matches[3]; |
|
$t = parse_url($uri); |
|
$link = $matches[3]; |
|
|
|
if (!empty($t['scheme'])) { |
|
return ' <a href="'.$uri.'">'.$link.'</a>'; |
|
} else { |
|
return $uri; |
|
} |
|
} |
|
|
|
// parse la description pour ajouter les liens sur les tags |
|
function parse_tags ($desc) { |
|
$desc_parse = preg_replace ('/#([\w\dÀÇÈÉÊËÎÏÔÙÚÛÜàáâçèéêëîïóùúûü]+)/i', '<a class="linktag" href="?addtag=\\1">\\1</a>', $desc); |
|
|
|
return $desc_parse; |
|
}
|
|
|