aboutsummaryrefslogtreecommitdiff
path: root/lib/lib_text.php
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2013-03-20 22:56:17 +0100
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2013-03-20 22:56:17 +0100
commitbf24aa601f96d184f9635fa72377d7521b324b4f (patch)
tree647e17c2a22c0e861c5dbe8f4efef1ea86bf8084 /lib/lib_text.php
parent80d4f5cf3d2d48fb095d0a2c7013dc3d99ae0065 (diff)
Ajout controller Rss pour export au format RSS (très très basique) #34 + ajout lib text pour gérer le bbcode
Diffstat (limited to 'lib/lib_text.php')
-rw-r--r--lib/lib_text.php88
1 files changed, 88 insertions, 0 deletions
diff --git a/lib/lib_text.php b/lib/lib_text.php
new file mode 100644
index 000000000..6e8f7b2bf
--- /dev/null
+++ b/lib/lib_text.php
@@ -0,0 +1,88 @@
+<?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;
+}