laurentgraph
05 Septembre 2007, 11:49
05 Septembre 2007, 11:49
Index du forum
» Rechercher
/* ** Encode une chaîne de caractère en caractères héxadécimaux visibles par ** le navigateur, afin d'offrir une protection contre la lecture de données dans ** la source de la page (anti spam) ** ---- ** $str :: Chaîne de caractère à encoder */ function hide_str($str) { $new = ''; $len = strlen($str); for ($i = 0; $i < $len; $i++) { $new .= '&#x' . bin2hex($str{$i}) . ';'; } return ($new); }
<?php /******************************************************************************* * * [ ./includes/functions/fonctions_message.php (français) ] * * -------------------------------------------------------------------------- * Commencé le : 21 aout 2004 * Copyright : Groupe Fire Soft Board * Site Web : http://www.fire-soft-board.com * E-mail : support@fire-soft-board.com * -------------------------------------------------------------------------- * Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les * termes de la Licence Publique Générale GNU publiée par la Free Software Foundation * (version 2). Reportez-vous à la Licence Publique Générale GNU pour plus de détails. * Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps * que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis. * -------------------------------------------------------------------------- * * Dernière modification le 28 mai 2006 par Genova * Templates : 0 * *******************************************************************************/ define('FUNCTIONS_MESSAGE', TRUE); /************************************ * Remplace les balises < et > par < et > ************************************/ function anti_html($texte) { $texte = preg_replace("e;/>/i"e;, "e;>"e;, $texte); $texte = preg_replace("e;/</i"e;, "e;<"e;, $texte); return $texte; } /************************************ * Remplace tous les liens du type url ou email par leurs équivalents HTML * - Fonction reprise (et boostée) de phpBB - ************************************/ function parse_url_email($texte) { $texte = preg_replace('#(script|about|applet|activex|chrome):#is', "e;\\1:"e;, $texte); $texte = preg_replace("e;#(^|[\n ]|<li>)([\w]+?://[^ \"e;\n\r\t<]*)#is"e;, "e;\\1<a href=\"e;\\2\"e; target=\"e;_blank\"e;>\\2</a>"e;, $texte); $texte = preg_replace("e;#(^|[\n ])((www|ftp)\.([^ \"e;\t\n\r<]){3,})#is"e;, "e;\\1<a href=\"e;http://\\2\"e; target=\"e;_blank\"e;>http://\\2</a>"e;, $texte); $texte = preg_replace_callback("e;#(?<=^|[\n ])([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)*[\w]+)#i"e;, 'parse_fsbcode_mail', $texte); return $texte; } /************************************ * Parse les symboles smileys en leurs équivalent HTML, à utiliser lors de la lecture d'un texte ************************************/ function smileys($texte, $smiley) { global $racine, $theme; static $origine = array(), $remplacement = array(), $passed = 0; if (!$passed) { for ( $s = 0; $s < count($smiley); $s++ ) { $origine[] = "e;/(?<=.\W|\W.|^\W)"e; . preg_quote($smiley[$s]['smiley_code'], "e;/"e;) . "e;(?=.\W|\W.|\W$)/"e;; $remplacement[] = sprintf($theme['img'], $racine . 'images/smileys/' . $smiley[$s]['smiley_nom'], $smiley[$s]['smiley_nom'], $smiley[$s]['smiley_nom']); } $passed = 1; } $texte = preg_replace($origine, $remplacement, ' ' . $texte . ' '); $texte = substr($texte, 1, -1); return $texte; } /************************************ * Parse les Fscode du texte, à utiliser lors de la lecture d'un texte * $parse_url :: active ou non le rempalcement automatique des mails et urls sans FScode ************************************/ function fscode_parse($texte, $parse_url_email = TRUE) { global $langue, $theme; // // On commence par le FScode [code] afin de pouvoir remplacer tous les [ et ] qu'il contient // par des équivalents, pour pouvoir les échapper. On rétablira les [ et ] à la fin. // preg_match_all("e;`\[code\](.*?)\[/code\]`si"e;, $texte, $matches); $nb_matches = count($matches[1]); for ($i = 0; $i < $nb_matches; $i++) { $origine = $matches[1][$i]; $remplacement = $matches[1][$i]; $remplacement = fscode2fs($remplacement); $remplacement = str_replace("e; "e;, "e; "e;, $remplacement); $remplacement = str_replace("e; "e;, "e; "e;, $remplacement); $remplacement = str_replace("e;\t"e;, "e; "e;, $remplacement); $remplacement = preg_replace("e;/^ {1}/m"e;, ' ', $remplacement); $remplacement = str_replace(array(':', '[', ']', ')', '('), array(':', '[', ']', ')', '('), $remplacement); $origine = '[cde]' . $origine . '[/cde]'; $remplacement = '[cde]' . $remplacement . '[/cde]'; $texte = str_replace($origine, $remplacement, $texte); } // Texte sous format code :: [cde]texte[/cde] $texte = fscode_subparse($texte, '(\[code\]|&fs1;code&fs2;)', '(\[/code\]|&fs1;\/code&fs2;)', sprintf($theme['fscode_ouvert'], '90%', $langue['code']), $theme['fscode_ferme']); // // Parse des [quote] et [quote=xxx]. La syntaxe [quot=xxx]yyy[/quot] est gardée afin de laisser une compaitibilité // avec les anciennes versions de FSB // while(preg_match('/\[quote\](.+?)\[\/quote\]/is', $texte)) { $texte = preg_replace('/\[quote\](.+?)\[\/quote\]/ise', 'replace_simple_quote(\'\\1\')', $texte); } foreach (array('quot', 'quote') AS $v) { while(preg_match('/\[' . $v . '=(.*?)\](.+?)\[\/' . $v . '\]/is', $texte)) { $texte = preg_replace('/\[' . $v . '=(.*?)\](.+?)\[\/' . $v . '\]/ise', 'replace_complex_quote(\'\\2\', \'\\1\')', $texte); } } // // On parse le FScode [list][b] de la même façon que [quote] en pranant le soin de ne parser que les [/b][*][b] // entre les balises de [list] // - Dark_Genova - // $texte = parse_list($texte); // Texte sous format liste :: [list][*][b][b][b]texte1 [/b][/b][/b][*][b][b][b]texte2 ... $texte = preg_replace("e;`\[list\](.*?)\[/list\]`si"e;, '<ul>\\1</ul>', $texte); // Texte en gras :: [b]texte[/b] $texte = parse_simple_fscode($texte, 'b', '<span class="e;b"e;>', '</span>'); // Texte en italique :: [i]texte[/i] $texte = parse_simple_fscode($texte, 'i', '<span class="e;i"e;>', '</span>'); // Texte souligné :: [u]texte[/u] $texte = parse_simple_fscode($texte, 'u', '<span class="e;u"e;>', '</span>'); // Texte coloré [couleur=#000000]texte[/couleur] $texte = fscode_subparse($texte, '(\[couleur=(\#[0-9A-Fa-f]{6}|[a-zA-Z].*?)\])', '(\[/couleur\])', '<span style="e;color:%s;"e;>', '</span>', 'couleur'); // texte plus ou moins grand :: [taille=18]texte[/taille] $texte = fscode_subparse($texte, '(\[taille=([[:digit:]-]{1,2})\])', '(\[/taille\])', '<span style="e;font-size:%spx"e;>', '</span>', 'taille'); // texte en url :: [url=http://www.fire-soft-board.com]http://www.fire-soft-board.com[/url] $texte = preg_replace('`\[url\](\w+?://)(.*?)\[/url\]`i', '<a href="e;\\1\\2"e; target="e;_blank"e;>\\1\\2</a>', $texte); $texte = preg_replace('`\[url\](www\.|ftp\.)(.*?)\[/url\]`i', '<a href="e;http://\\1\\2"e; target="e;_blank"e;>\\1\\2</a>', $texte); // Texte masquant une url :: [url=http://www.fire-soft-board.com]texte[/url] $texte = preg_replace('`\[url=(\w+?://)(.*?)\](.*?)\[/url\]`i', '<a href="e;\\1\\2"e; target="e;_blank"e;>\\3</a>', $texte); $texte = preg_replace('`\[url=(www\.|ftp\.)(.*?)\](.*?)\[/url\]`i', '<a href="e;http://\\1\\2"e; target="e;_blank"e;>\\3</a>', $texte); // texte en mail :: support@fire-soft-board.com $texte = preg_replace_callback('`\[mail\](.*?@.*?\..*?)\[/mail\]`si', 'parse_fsbcode_mail', $texte); // Texte masquant un mail :: support@fire-soft-board.com $texte = preg_replace_callback('`\[mail=(.*?@.*?\..*?)\](.*?)\[/mail\]`si', 'parse_fsbcode_mail', $texte); // Image :: [img:alt=http://forums.fire-soft-board.com/images/logo_fsb.jpg]http://forums.fire-soft-board.com/images/logo_fsb.jpg[/img] $texte = preg_replace('`\[img\](\w+?://.*?)\[/img\]`i', '<img src="e;\\1"e; border="e;0"e;>', $texte); // // On parse les URL et adresses mails en les encadrants des BBcodes necessaires // if ( $parse_url_email ) { $texte = parse_url_email($texte); } // On rétabli ensuite les &fs1; et &fs2; en [ et ] $texte = fs2fscode($texte); return $texte; } /************************************ * Parse les FScode pouvant s'encastrer entre eux comme les [quote] ou [list] ************************************/ function fscode_subparse($texte, $patern_ouvert, $patern_ferme, $theme_ouvert, $theme_ferme, $special = FALSE) { global $langue, $theme; preg_match_all('`' . $patern_ouvert . '`si', $texte, $matches_o); preg_match_all('`' . $patern_ferme . '`si', $texte, $matches_f); $minimum = min(count($matches_o[0]), count($matches_f[0])); $position_o = 0; $position_f = 0; for ( $i = 0; $i < $minimum; $i++ ) { $position_o = strpos($texte, $matches_o[0][$i], $position_o); $position_f = strpos($texte, $matches_f[0][$i], $position_f); if ( $position_o < $position_f ) { $open = $theme_ouvert; if ($special == 'quot') { $open = sprintf($theme['fsquote_ouvert'], '90%', $langue['citer'] . ' : ' . $matches_o[2][$i]); } else if ($special == 'couleur' || $special == 'taille') { $open = sprintf($theme_ouvert, $matches_o[2][$i]); } $texte = preg_replace('`' . preg_quote($matches_o[0][$i]) . '`si', $open, $texte, 1); $texte = preg_replace('`' . preg_quote($matches_f[0][$i]) . '`si', $theme_ferme, $texte, 1); } } return $texte; } /************************************ * Parse le texte de manière a afficher du code ************************************/ function fscode_code($texte) { global $langue, $theme; return sprintf($theme['fscode_code'], '90%', $langue['code'], $texte); } /************************************ * Remplace les signes [ et ] par &fs1; et &fs2; ************************************/ function fscode2fs($texte) { $origine = array('#\[#', '#\]#'); $remplacement = array('&fs1;', '&fs2;'); return preg_replace($origine, $remplacement, $texte); } /************************************ * Remplace les signes &fs1; et &fs2; par [ et ] ************************************/ function fs2fscode($texte) { $origine = array('#&fs1;#', '#&fs2;#'); $remplacement = array('[', ']'); return preg_replace($origine, $remplacement, $texte); } /************************************ * Supprime toutes les balises de type [texte] du message. ************************************/ function fscode_supprimer($texte) { return preg_replace('/\[(\/?)[[:alnum:]]+\]/si', '', $texte); } /************************************ * Parse les simples FScode correctement. * Merci à Dr DLP pour cette fonction [img:alt=http://www.fire-soft-board.com/fsb//images/smileys/clown.gif]http://www.fire-soft-board.com/fsb//images/smileys/clown.gif[/img] ************************************/ function parse_simple_fscode($message, $fscode, $open, $close) { $pattern = '#\[' . $fscode . '\](.*?)\[/' . $fscode . '\]#si'; $replace = $open . '\\1' . $close; while (preg_match($pattern, $message)) { $message = preg_replace($pattern, $replace, $message); } return ($message); } /* ** Gestion des FScodes [list] */ function parse_list($str) { while(preg_match('/\n?\[list\](.+?)\[\/list\]\n?/is', $str)) { $str = preg_replace('/\n?\[list\](.+?)\[\/list\]\n?/ies', "e;subparse_list('\\1')"e; , $str); } return ($str); } function subparse_list($str) { $str = str_replace('\"e;', '"e;', $str); $str = preg_replace('/\[\*\]/', '</li><li>', $str); $str = preg_replace('/^<\/?li>/', '', $str); $str = str_replace( "e;\n</li>"e;, '</li>', $str . '</li>'); return '<ul>' . $str . '</ul>'; } /* ** Fonctions callback pour les FScodes [quote] */ function replace_simple_quote($str) { global $langue, $theme; $str = str_replace('\"e;', '"e;', $str); return (sprintf($theme['fsquote_ouvert'], '90%', $langue['citer']) . $str . $theme['fsquote_ferme']); } function replace_complex_quote($str, $name) { global $langue, $theme; $str = str_replace('\"e;', '"e;', $str); $name = str_replace('\"e;', '"e;', $name); return (sprintf($theme['fsquote_ouvert'], '90%', $langue['citer'] . ' : ' . $name) . $str . $theme['fsquote_ferme']); } /* ** Callback pour traiter les adresses E-mails */ function parse_fsbcode_mail($match) { $email = hide_str($match[1]); $content = (isset($match[2])) ? $match[2] : $email; return ('<a href="e;mailto:' . $email . '"e;>' . $content . '</a>'); } ?>
function parse_fsbcode_mail($match) { $email = hide_str($match[1]); $content = (isset($match[2])) ? $match[2] : $email; return ('<a href="e;mailto:' . $email . '"e;>' . $content . '</a>'); }
return ((preg_match('/' . str_replace('\*', '.*', preg_quote($mask)) . '/', $str)) ? TRUE : FALSE);return ((preg_match('[' . str_replace('\*', '.*', preg_quote($mask)) . ']', $str)) ? TRUE : FALSE);Warning: Unknown modifier '/' in /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions.php on line 421 Warning: Cannot modify header information - headers already sent by (output started at /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions.php:421) in /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions.php on line
Warning: Unknown modifier '/' in /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions.php on line 421 Warning: Cannot modify header information - headers already sent by (output started at /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions.php:421) in /home/doigtsdefees/www/doigtsdefees.com/forum/includes/functions/fonctions.php on line
