function strtotext($str) { // Försäkra sig om att alla radbrytningar är \n $str = str_replace(array("\n\r", "\r\n", "\r"), "\n", $str); // Lagra alla kod-block i en array $code_matches = array(); preg_match_all('/\[php](.*?)\[\/php]/is', $str, $code_matches); // Ta bort all kod innan text-formateringen $str = preg_replace('/\[php](.*?)\[\/php]/is', "\n\n[CODE-BLOCK]\n\n", $str); // Kör igenom kod-blocken for ($i = 0; $i < count($code_matches[1]); $i++) { // Ta bort den första och sista radbrytningen if (substr($code_matches[1][$i], 0, 1) == "\n") { $code_matches[1][$i] = substr($code_matches[1][$i], 1); } if (substr($code_matches[1][$i], -1, 1) == "\n") { $code_matches[1][$i] = substr($code_matches[1][$i], 0, -1); } // Kör highlight_string på kod-blocken $code_matches[1][$i] = "
" . highlight_string($code_matches[1][$i], true) . "

"; } $str = htmlentities($str); // Grunderna - Fet, kursiv, understruken $str = preg_replace('/\[b](.*?)\[\/b]/', '\1', $str); $str = preg_replace('/\[i](.*?)\[\/i]/', '\1', $str); $str = preg_replace('/\[u](.*?)\[\/u]/', '', $str); // Länkar - URL1 & URL2 $str = preg_replace('/\[url=((https?|ftps?):\/\/)?(([-_a-zA-Z]+\.)*)([a-zA-Z]{2,6})(\/[^\]\[\s]*)?\]([^\]\[]+)\[\/url\]?/e',"'$1'!=''?'$7':'$7'", $str); $str = preg_replace('/\[url]((https?|ftps?):\/\/)?(([-_a-zA-Z]+\.)*)([a-zA-Z]{2,6})(\/[^\]\[\s]*)?\[\/url\]/e',"'$1'!='' ?'$1$3$5$6':'$3$5$6'", $str); // Färger - Röd, grön, blå & orange $str = preg_replace('/\[color=(red|green|blue|orange)](.*?)\[\/color]/', '\2', $str); // Lägg tillbaka alla kod-block foreach ($code_matches[1] as $block) { $str = str_replace_once("[CODE-BLOCK]", $block, $str); } return $str; }