Activity Stream
48,167 MEMBERS
6871 ONLINE
besthostingforums On YouTube Subscribe to our Newsletter besthostingforums On Twitter besthostingforums On Facebook besthostingforums On facebook groups

Page 1 of 2 12 LastLast
Results 1 to 10 of 17
  1.     
    #1
    Member

    Default [phpBB2] help with code tag modifications

    hi guys,

    Can someone help me?
    I like to make a url clickable inside of a [code] tags.

    I am using a database from an old forum and would like to disable all [code] tags that appears in all posts. I only need this to make urls into links. So, If exists a easy way to make this, please let me know

    Thank you

    This is my includes/bbcode.php file:
    PHP Code: 
    <?php
    /***************************************************************************
     *                              bbcode.php
     *                            -------------------
     *   begin                : Saturday, Feb 13, 2001
     *   copyright            : (C) 2001 The phpBB Group
     *   email                : support@phpbb.com
     *
     *   $Id: bbcode.php 5589 2006-02-26 17:35:17Z grahamje $
     *
     ***************************************************************************/

    /***************************************************************************
     *
     *   This program is free software; you can redistribute it and/or modify
     *   it under the terms of the GNU General Public License as published by
     *   the Free Software Foundation; either version 2 of the License, or
     *   (at your option) any later version.
     *
     ***************************************************************************/

    if ( !defined('IN_PHPBB') )
    {
        die(
    "Hacking attempt");
    }

    define("BBCODE_UID_LEN"10);

    // global that holds loaded-and-prepared bbcode templates, so we only have to do
    // that stuff once.

    $bbcode_tpl null;

    /**
     * Loads bbcode templates from the bbcode.tpl file of the current template set.
     * Creates an array, keys are bbcode names like "b_open" or "url", values
     * are the associated template.
     * Probably pukes all over the place if there's something really screwed
     * with the bbcode.tpl file.
     *
     * Nathan Codding, Sept 26 2001.
     */
    function load_bbcode_template()
    {
        global 
    $template;
        
    $tpl_filename $template->make_filename('bbcode.tpl');
        
    $tpl fread(fopen($tpl_filename'r'), filesize($tpl_filename));

        
    // replace \ with \\ and then ' with \'.
        
    $tpl str_replace('\\''\\\\'$tpl);
        
    $tpl  str_replace('\'''\\\''$tpl);

        
    // strip newlines.
        
    $tpl  str_replace("\n"''$tpl);

        
    // Turn template blocks into PHP assignment statements for the values of $bbcode_tpls..
        
    $tpl preg_replace('#<!-- BEGIN (.*?) -->(.*?)<!-- END (.*?) -->#'"\n" '$bbcode_tpls[\'\\1\'] = \'\\2\';'$tpl);

        
    $bbcode_tpls = array();

        eval(
    $tpl);

        return 
    $bbcode_tpls;
    }


    /**
     * Prepares the loaded bbcode templates for insertion into preg_replace()
     * or str_replace() calls in the bbencode_second_pass functions. This
     * means replacing template placeholders with the appropriate preg backrefs
     * or with language vars. NOTE: If you change how the regexps work in
     * bbencode_second_pass(), you MUST change this function.
     *
     * Nathan Codding, Sept 26 2001
     *
     */
    function prepare_bbcode_template($bbcode_tpl)
    {
        global 
    $lang;

        
    $bbcode_tpl['olist_open'] = str_replace('{LIST_TYPE}''\\1'$bbcode_tpl['olist_open']);

        
    $bbcode_tpl['color_open'] = str_replace('{COLOR}''\\1'$bbcode_tpl['color_open']);

        
    $bbcode_tpl['size_open'] = str_replace('{SIZE}''\\1'$bbcode_tpl['size_open']);

        
    $bbcode_tpl['quote_open'] = str_replace('{L_QUOTE}'$lang['Quote'], $bbcode_tpl['quote_open']);

        
    $bbcode_tpl['quote_username_open'] = str_replace('{L_QUOTE}'$lang['Quote'], $bbcode_tpl['quote_username_open']);
        
    $bbcode_tpl['quote_username_open'] = str_replace('{L_WROTE}'$lang['wrote'], $bbcode_tpl['quote_username_open']);
        
    $bbcode_tpl['quote_username_open'] = str_replace('{USERNAME}''\\1'$bbcode_tpl['quote_username_open']);

        
    $bbcode_tpl['code_open'] = str_replace('{L_CODE}'$lang['Code'], $bbcode_tpl['code_open']);

        
    $bbcode_tpl['img'] = str_replace('{URL}''\\1'$bbcode_tpl['img']);

        
    // We do URLs in several different ways..
        
    $bbcode_tpl['url1'] = str_replace('{URL}''\\1'$bbcode_tpl['url']);
        
    $bbcode_tpl['url1'] = str_replace('{DESCRIPTION}''\\1'$bbcode_tpl['url1']);

        
    $bbcode_tpl['url2'] = str_replace('{URL}''http://\\1'$bbcode_tpl['url']);
        
    $bbcode_tpl['url2'] = str_replace('{DESCRIPTION}''\\1'$bbcode_tpl['url2']);

        
    $bbcode_tpl['url3'] = str_replace('{URL}''\\1'$bbcode_tpl['url']);
        
    $bbcode_tpl['url3'] = str_replace('{DESCRIPTION}''\\2'$bbcode_tpl['url3']);

        
    $bbcode_tpl['url4'] = str_replace('{URL}''http://\\1'$bbcode_tpl['url']);
        
    $bbcode_tpl['url4'] = str_replace('{DESCRIPTION}''\\3'$bbcode_tpl['url4']);

        
    $bbcode_tpl['email'] = str_replace('{EMAIL}''\\1'$bbcode_tpl['email']);

        
    define("BBCODE_TPL_READY"true);

        return 
    $bbcode_tpl;
    }


    /**
     * Does second-pass bbencoding. This should be used before displaying the message in
     * a thread. Assumes the message is already first-pass encoded, and we are given the
     * correct UID as used in first-pass encoding.
     */
    function bbencode_second_pass($text$uid)
    {
        global 
    $lang$bbcode_tpl;

        
    $text preg_replace('#(script|about|applet|activex|chrome):#is'"\\1:"$text);

        
    // pad it with a space so we can distinguish between FALSE and matching the 1st char (index 0).
        // This is important; bbencode_quote(), bbencode_list(), and bbencode_code() all depend on it.
        
    $text " " $text;

        
    // First: If there isn't a "[" and a "]" in the message, don't bother.
        
    if (! (strpos($text"[") && strpos($text"]")) )
        {
            
    // Remove padding, return.
            
    $text substr($text1);
            return 
    $text;
        }

        
    // Only load the templates ONCE..
        
    if (!defined("BBCODE_TPL_READY"))
        {
            
    // load templates from file into array.
            
    $bbcode_tpl load_bbcode_template();

            
    // prepare array for use in regexps.
            
    $bbcode_tpl prepare_bbcode_template($bbcode_tpl);
        }

        
    // [CODE] and [/CODE] for posting code (HTML, PHP, C etc etc) in your posts.
        
    $text bbencode_second_pass_code($text$uid$bbcode_tpl);

        
    // [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff.
        
    $text str_replace("[quote:$uid]"$bbcode_tpl['quote_open'], $text);
        
    $text str_replace("[/quote:$uid]"$bbcode_tpl['quote_close'], $text);

        
    // New one liner to deal with opening quotes with usernames...
        // replaces the two line version that I had here before..
        
    $text preg_replace("/\[quote:$uid=\"(.*?)\"\]/si"$bbcode_tpl['quote_username_open'], $text);

        
    // 
    [list] and 
    [list=
    x] for (un)ordered lists.
        
    // unordered lists
        
    $text str_replace("
    [list:
    $uid]"$bbcode_tpl['ulist_open'], $text);
        
    // li tags
        
    $text str_replace("[*:$uid]"$bbcode_tpl['listitem'], $text);
        
    // ending tags
        
    $text str_replace("[/list:u:$uid]"$bbcode_tpl['ulist_close'], $text);
        
    $text str_replace("[/list:o:$uid]"$bbcode_tpl['olist_close'], $text);
        
    // Ordered lists
        
    $text preg_replace("/\
    [list=([a1]):
    $uid\]/si"$bbcode_tpl['olist_open'], $text);

        
    // colours
        
    $text preg_replace("/\[color=(\#[0-9A-F]{6}|[a-z]+):$uid\]/si"$bbcode_tpl['color_open'], $text);
        
    $text str_replace("[/color:$uid]"$bbcode_tpl['color_close'], $text);

        
    // size
        
    $text preg_replace("/\[size=([1-2]?[0-9]):$uid\]/si"$bbcode_tpl['size_open'], $text);
        
    $text str_replace("[/size:$uid]"$bbcode_tpl['size_close'], $text);

        
    // [b] and [/b] for bolding text.
        
    $text str_replace("[b:$uid]"$bbcode_tpl['b_open'], $text);
        
    $text str_replace("[/b:$uid]"$bbcode_tpl['b_close'], $text);

        
    // [u] and [/u] for underlining text.
        
    $text str_replace("[u:$uid]"$bbcode_tpl['u_open'], $text);
        
    $text str_replace("[/u:$uid]"$bbcode_tpl['u_close'], $text);

        
    // [i] and [/i] for italicizing text.
        
    $text str_replace("[i:$uid]"$bbcode_tpl['i_open'], $text);
        
    $text str_replace("[/i:$uid]"$bbcode_tpl['i_close'], $text);

        
    // Patterns and replacements for URL and email tags..
        
    $patterns = array();
        
    $replacements = array();

        
    // [img]image_url_here[/img] code..
        // This one gets first-passed..
        
    $patterns[] = "#\[img:$uid\]([^?](?:[^\[]+|\[(?!url))*?)\[/img:$uid\]#i";
        
    $replacements[] = $bbcode_tpl['img'];

        
    // matches a [url]xxxx://www.phpbb.com[/url] code..
        
    $patterns[] = "#\[url\]([\w]+?://([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is";
        
    $replacements[] = $bbcode_tpl['url1'];

        
    // [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
        
    $patterns[] = "#\[url\]((www|ftp)\.([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is";
        
    $replacements[] = $bbcode_tpl['url2'];

        
    // [url=xxxx://www.phpbb.com]phpBB[/url] code..
        
    $patterns[] = "#\[url=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is";
        
    $replacements[] = $bbcode_tpl['url3'];

        
    // [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
        
    $patterns[] = "#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is";
        
    $replacements[] = $bbcode_tpl['url4'];

        
    // [email]user@domain.tld[/email] code..
        
    $patterns[] = "#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si";
        
    $replacements[] = $bbcode_tpl['email'];

        
    $text preg_replace($patterns$replacements$text);

        
    // Remove our padding from the string..
        
    $text substr($text1);

        return 
    $text;

    // bbencode_second_pass()

    // Need to initialize the random numbers only ONCE
    mt_srand( (double) microtime() * 1000000);

    function 
    make_bbcode_uid()
    {
        
    // Unique ID for this message..

        
    $uid dss_rand();
        
    $uid substr($uid0BBCODE_UID_LEN);

        return 
    $uid;
    }

    function 
    bbencode_first_pass($text$uid)
    {
        
    // pad it with a space so we can distinguish between FALSE and matching the 1st char (index 0).
        // This is important; bbencode_quote(), bbencode_list(), and bbencode_code() all depend on it.
        
    $text " " $text;

        
    // [CODE] and [/CODE] for posting code (HTML, PHP, C etc etc) in your posts.
        
    $text bbencode_first_pass_pda($text$uid'[code]''[/code]'''true'');

        
    // [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff.
        
    $text bbencode_first_pass_pda($text$uid'[quote]''[/quote]'''false'');
        
    $text bbencode_first_pass_pda($text$uid'/\[quote=\\\\&quot;(.*?)\\\\&quot;\]/is''[/quote]'''false''"[quote:$uid=\\\"\\1\\\"]");

        
    // 
    [list] and 
    [list=
    x] for (un)ordered lists.
        
    $open_tag = array();
        
    $open_tag[0] = "
    [list]"
    ;

        
    // unordered..
        
    $text bbencode_first_pass_pda($text$uid$open_tag"[/list]
    "
    "[/list:u]"false'replace_listitems');

        
    $open_tag[0] = "
    [list=1]"
    ;
        
    $open_tag[1] = "
    [list=a]"
    ;

        
    // ordered.
        
    $text bbencode_first_pass_pda($text$uid$open_tag"[/list]
    "
    "[/list:o]",  false'replace_listitems');

        
    // [color] and [/color] for setting text color
        
    $text preg_replace("#\[color=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/color\]#si""[color=\\1:$uid]\\2[/color:$uid]"$text);

        
    // [size] and [/size] for setting text size
        
    $text preg_replace("#\[size=([1-2]?[0-9])\](.*?)\[/size\]#si""[size=\\1:$uid]\\2[/size:$uid]"$text);

        
    // [b] and [/b] for bolding text.
        
    $text preg_replace("#\[b\](.*?)\[/b\]#si""[b:$uid]\\1[/b:$uid]"$text);

        
    // [u] and [/u] for underlining text.
        
    $text preg_replace("#\[u\](.*?)\[/u\]#si""[u:$uid]\\1[/u:$uid]"$text);

        
    // [i] and [/i] for italicizing text.
        
    $text preg_replace("#\[i\](.*?)\[/i\]#si""[i:$uid]\\1[/i:$uid]"$text);

        
    // [img]image_url_here[/img] code..
        
    $text preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie""'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'"$text);

        
    // Remove our padding from the string..
        
    return substr($text1);;

    // bbencode_first_pass()

    /**
     * $text - The text to operate on.
     * $uid - The UID to add to matching tags.
     * $open_tag - The opening tag to match. Can be an array of opening tags.
     * $close_tag - The closing tag to match.
     * $close_tag_new - The closing tag to replace with.
     * $mark_lowest_level - boolean - should we specially mark the tags that occur
     *                     at the lowest level of nesting? (useful for [code], because
     *                        we need to match these tags first and transform HTML tags
     *                        in their contents..
     * $func - This variable should contain a string that is the name of a function.
     *                That function will be called when a match is found, and passed 2
     *                parameters: ($text, $uid). The function should return a string.
     *                This is used when some transformation needs to be applied to the
     *                text INSIDE a pair of matching tags. If this variable is FALSE or the
     *                empty string, it will not be executed.
     * If open_tag is an array, then the pda will try to match pairs consisting of
     * any element of open_tag followed by close_tag. This allows us to match things
     * like 
    [list=A]...[/list]
     and 
    [list=1]...[/list]
     in one pass of the PDA.
     *
     * NOTES:    - this function assumes the first character of $text is a space.
     *                - every opening tag and closing tag must be of the [...] format.
     */
    function bbencode_first_pass_pda($text$uid$open_tag$close_tag$close_tag_new$mark_lowest_level$func$open_regexp_replace false)
    {
        
    $open_tag_count 0;

        if (!
    $close_tag_new || ($close_tag_new == ''))
        {
            
    $close_tag_new $close_tag;
        }

        
    $close_tag_length strlen($close_tag);
        
    $close_tag_new_length strlen($close_tag_new);
        
    $uid_length strlen($uid);

        
    $use_function_pointer = ($func && ($func != ''));

        
    $stack = array();

        if (
    is_array($open_tag))
        {
            if (
    == count($open_tag))
            {
                
    // No opening tags to match, so return.
                
    return $text;
            }
            
    $open_tag_count count($open_tag);
        }
        else
        {
            
    // only one opening tag. make it into a 1-element array.
            
    $open_tag_temp $open_tag;
            
    $open_tag = array();
            
    $open_tag[0] = $open_tag_temp;
            
    $open_tag_count 1;
        }

        
    $open_is_regexp false;

        if (
    $open_regexp_replace)
        {
            
    $open_is_regexp true;
            if (!
    is_array($open_regexp_replace))
            {
                
    $open_regexp_temp $open_regexp_replace;
                
    $open_regexp_replace = array();
                
    $open_regexp_replace[0] = $open_regexp_temp;
            }
        }

        if (
    $mark_lowest_level && $open_is_regexp)
        {
            
    message_die(GENERAL_ERROR"Unsupported operation for bbcode_first_pass_pda().");
        }

        
    // Start at the 2nd char of the string, looking for opening tags.
        
    $curr_pos 1;
        while (
    $curr_pos && ($curr_pos strlen($text)))
        {
            
    $curr_pos strpos($text"["$curr_pos);

            
    // If not found, $curr_pos will be 0, and the loop will end.
            
    if ($curr_pos)
            {
                
    // We found a [. It starts at $curr_pos.
                // check if it's a starting or ending tag.
                
    $found_start false;
                
    $which_start_tag "";
                
    $start_tag_index = -1;

                for (
    $i 0$i $open_tag_count$i++)
                {
                    
    // Grab everything until the first "]"...
                    
    $possible_start substr($text$curr_posstrpos($text']'$curr_pos 1) - $curr_pos 1);

                    
    //
                    // We're going to try and catch usernames with "[' characters.
                    //
                    
    if( preg_match('#\[quote=\\\&quot;#si'$possible_start$match) && !preg_match('#\[quote=\\\&quot;(.*?)\\\&quot;\]#si'$possible_start) )
                    {
                        
    // OK we are in a quote tag that probably contains a ] bracket.
                        // Grab a bit more of the string to hopefully get all of it..
                        
    if ($close_pos strpos($text'&quot;]'$curr_pos 14))
                        {
                            if (
    strpos(substr($text$curr_pos 14$close_pos - ($curr_pos 14)), '[quote') === false)
                            {
                                
    $possible_start substr($text$curr_pos$close_pos $curr_pos 7);
                            }
                        }
                    }

                    
    // Now compare, either using regexp or not.
                    
    if ($open_is_regexp)
                    {
                        
    $match_result = array();
                        if (
    preg_match($open_tag[$i], $possible_start$match_result))
                        {
                            
    $found_start true;
                            
    $which_start_tag $match_result[0];
                            
    $start_tag_index $i;
                            break;
                        }
                    }
                    else
                    {
                        
    // straightforward string comparison.
                        
    if (== strcasecmp($open_tag[$i], $possible_start))
                        {
                            
    $found_start true;
                            
    $which_start_tag $open_tag[$i];
                            
    $start_tag_index $i;
                            break;
                        }
                    }
                }

                if (
    $found_start)
                {
                    
    // We have an opening tag.
                    // Push its position, the text we matched, and its index in the open_tag array on to the stack, and then keep going to the right.
                    
    $match = array("pos" => $curr_pos"tag" => $which_start_tag"index" => $start_tag_index);
                    
    array_push($stack$match);
                    
    //
                    // Rather than just increment $curr_pos
                    // Set it to the ending of the tag we just found
                    // Keeps error in nested tag from breaking out
                    // of table structure..
                    //
                    
    $curr_pos += strlen($possible_start);
                }
                else
                {
                    
    // check for a closing tag..
                    
    $possible_end substr($text$curr_pos$close_tag_length);
                    if (
    == strcasecmp($close_tag$possible_end))
                    {
                        
    // We have an ending tag.
                        // Check if we've already found a matching starting tag.
                        
    if (sizeof($stack) > 0)
                        {
                            
    // There exists a starting tag.
                            
    $curr_nesting_depth sizeof($stack);
                            
    // We need to do 2 replacements now.
                            
    $match array_pop($stack);
                            
    $start_index $match['pos'];
                            
    $start_tag $match['tag'];
                            
    $start_length strlen($start_tag);
                            
    $start_tag_index $match['index'];

                            if (
    $open_is_regexp)
                            {
                                
    $start_tag preg_replace($open_tag[$start_tag_index], $open_regexp_replace[$start_tag_index], $start_tag);
                            }

                            
    // everything before the opening tag.
                            
    $before_start_tag substr($text0$start_index);

                            
    // everything after the opening tag, but before the closing tag.
                            
    $between_tags substr($text$start_index $start_length$curr_pos $start_index $start_length);

                            
    // Run the given function on the text between the tags..
                            
    if ($use_function_pointer)
                            {
                                
    $between_tags $func($between_tags$uid);
                            }

                            
    // everything after the closing tag.
                            
    $after_end_tag substr($text$curr_pos $close_tag_length);

                            
    // Mark the lowest nesting level if needed.
                            
    if ($mark_lowest_level && ($curr_nesting_depth == 1))
                            {
                                if (
    $open_tag[0] == '[code]')
                                {
                                    
    $code_entities_match = array('#<#''#>#''#"#''#:#''#\[#''#\]#''#\(#''#\)#''#\{#''#\}#');
                                    
    $code_entities_replace = array('&lt;''&gt;''&quot;'':''['']''('')''{''}');
                                    
    $between_tags preg_replace($code_entities_match$code_entities_replace$between_tags);
                                }
                                
    $text $before_start_tag substr($start_tag0$start_length 1) . ":$curr_nesting_depth:$uid]";
                                
    $text .= $between_tags substr($close_tag_new0$close_tag_new_length 1) . ":$curr_nesting_depth:$uid]";
                            }
                            else
                            {
                                if (
    $open_tag[0] == '[code]')
                                {
                                    
    $text $before_start_tag '[code]';
                                    
    $text .= $between_tags '[/code]';
                                }
                                else
                                {
                                    if (
    $open_is_regexp)
                                    {
                                        
    $text $before_start_tag $start_tag;
                                    }
                                    else
                                    {
                                        
    $text $before_start_tag substr($start_tag0$start_length 1) . ":$uid]";
                                    }
                                    
    $text .= $between_tags substr($close_tag_new0$close_tag_new_length 1) . ":$uid]";
                                }
                            }

                            
    $text .= $after_end_tag;

                            
    // Now.. we've screwed up the indices by changing the length of the string.
                            // So, if there's anything in the stack, we want to resume searching just after it.
                            // otherwise, we go back to the start.
                            
    if (sizeof($stack) > 0)
                            {
                                
    $match array_pop($stack);
                                
    $curr_pos $match['pos'];
    //                            bbcode_array_push($stack, $match);
    //                            ++$curr_pos;
                            
    }
                            else
                            {
                                
    $curr_pos 1;
                            }
                        }
                        else
                        {
                            
    // No matching start tag found. Increment pos, keep going.
                            
    ++$curr_pos;
                        }
                    }
                    else
                    {
                        
    // No starting tag or ending tag.. Increment pos, keep looping.,
                        
    ++$curr_pos;
                    }
                }
            }
        } 
    // while

        
    return $text;

    // bbencode_first_pass_pda()

    /**
     * Does second-pass bbencoding of the [code] tags. This includes
     * running htmlspecialchars() over the text contained between
     * any pair of [code] tags that are at the first level of
     * nesting. Tags at the first level of nesting are indicated
     * by this format: [code:1:$uid] ... [/code:1:$uid]
     * Other tags are in this format: [code:$uid] ... [/code:$uid]
     */
    function bbencode_second_pass_code($text$uid$bbcode_tpl)
    {
        global 
    $lang;

        
    $code_start_html $bbcode_tpl['code_open'];
        
    $code_end_html =  $bbcode_tpl['code_close'];

        
    // First, do all the 1st-level matches. These need an htmlspecialchars() run,
        // so they have to be handled differently.
        
    $match_count preg_match_all("#\[code:1:$uid\](.*?)\[/code:1:$uid\]#si"$text$matches);

        for (
    $i 0$i $match_count$i++)
        {
            
    $before_replace $matches[1][$i];
            
    $after_replace $matches[1][$i];

            
    // Replace 2 spaces with "&nbsp; " so non-tabbed code indents without making huge long lines.
            
    $after_replace str_replace("  ""&nbsp; "$after_replace);
            
    // now Replace 2 spaces with " &nbsp;" to catch odd #s of spaces.
            
    $after_replace str_replace("  "" &nbsp;"$after_replace);

            
    // Replace tabs with "&nbsp; &nbsp;" so tabbed code indents sorta right without making huge long lines.
            
    $after_replace str_replace("\t""&nbsp; &nbsp;"$after_replace);

            
    // now Replace space occurring at the beginning of a line
            
    $after_replace preg_replace("/^ {1}/m"'&nbsp;'$after_replace);

            
    $str_to_match "[code:1:$uid]" $before_replace "[/code:1:$uid]";

            
    $replacement $code_start_html;
            
    $replacement .= $after_replace;
            
    $replacement .= $code_end_html;

            
    $text str_replace($str_to_match$replacement$text);
        }

        
    // Now, do all the non-first-level matches. These are simple.
        
    $text str_replace("[code:$uid]"$code_start_html$text);
        
    $text str_replace("[/code:$uid]"$code_end_html$text);

        return 
    $text;

    // bbencode_second_pass_code()

    /**
     * Rewritten by Nathan Codding - Feb 6, 2001.
     * - Goes through the given string, and replaces xxxx://yyyy with an HTML <a> tag linking
     *     to that URL
     * - Goes through the given string, and replaces www.xxxx.yyyy[zzzz] with an HTML <a> tag linking
     *     to http://www.xxxx.yyyy[/zzzz]
     * - Goes through the given string, and replaces xxxx@yyyy with an HTML mailto: tag linking
     *        to that email address
     * - Only matches these 2 patterns either after a space, or at the beginning of a line
     *
     * Notes: the email one might get annoying - it's easy to make it more restrictive, though.. maybe
     * have it require something like xxxx@yyyy.zzzz or such. We'll see.
     */
    function make_clickable($text)
    {
        
    $text preg_replace('#(script|about|applet|activex|chrome):#is'"\\1:"$text);

        
    // pad it with a space so we can match things at the start of the 1st line.
        
    $ret ' ' $text;

        
    // matches an "xxxx://yyyy" URL at the start of a line, or after a space.
        // xxxx can only be alpha characters.
        // yyyy is anything up to the first space, newline, comma, double quote or <
        
    $ret preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is""\\1<a href=\"\\2\" target=\"_blank\">\\2</a>"$ret);

        
    // matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
        // Must contain at least 2 dots. xxxx contains either alphanum, or "-"
        // zzzz is optional.. will contain everything up to the first space, newline, 
        // comma, double quote or <.
        
    $ret preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is""\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>"$ret);

        
    // matches an email@domain type address at the start of a line, or after a space.
        // Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".
        
    $ret preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i""\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>"$ret);

        
    // Remove our padding..
        
    $ret substr($ret1);

        return(
    $ret);
    }

    /**
     * Nathan Codding - Feb 6, 2001
     * Reverses the effects of make_clickable(), for use in editpost.
     * - Does not distinguish between "www.xxxx.yyyy" and "http://aaaa.bbbb" type URLs.
     *
     */
    function undo_make_clickable($text)
    {
        
    $text preg_replace("#<!-- BBCode auto-link start --><a href=\"(.*?)\" target=\"_blank\">.*?</a><!-- BBCode auto-link end -->#i""\\1"$text);
        
    $text preg_replace("#<!-- BBcode auto-mailto start --><a href=\"mailto:(.*?)\">.*?</a><!-- BBCode auto-mailto end -->#i""\\1"$text);

        return 
    $text;

    }

    /**
     * Nathan Codding - August 24, 2000.
     * Takes a string, and does the reverse of the PHP standard function
     * htmlspecialchars().
     */
    function undo_htmlspecialchars($input)
    {
        
    $input preg_replace("/&gt;/i"">"$input);
        
    $input preg_replace("/&lt;/i""<"$input);
        
    $input preg_replace("/&quot;/i""\""$input);
        
    $input preg_replace("/&amp;/i""&"$input);

        return 
    $input;
    }

    /**
     * This is used to change a [*] tag into a [*:$uid] tag as part
     * of the first-pass bbencoding of 
    [list] tags. It fits the
     * standard required in order to be passed as a variable
     * function into bbencode_first_pass_pda().
     */
    function replace_listitems($text$uid)
    {
        
    $text str_replace("[*]""[*:$uid]"$text);

        return 
    $text;
    }

    /**
     * Escapes the "/" character with "\/". This is useful when you need
     * to stick a runtime string into a PREG regexp that is being delimited
     * with slashes.
     */
    function escape_slashes($input)
    {
        
    $output str_replace('/''\/'$input);
        return 
    $output;
    }

    /**
     * This function does exactly what the PHP4 function array_push() does
     * however, to keep phpBB compatable with PHP 3 we had to come up with our own
     * method of doing it.
     * This function was deprecated in phpBB 2.0.18
     */
    function bbcode_array_push(&$stack$value)
    {
       
    $stack[] = $value;
       return(
    sizeof($stack));
    }

    /**
     * This function does exactly what the PHP4 function array_pop() does
     * however, to keep phpBB compatable with PHP 3 we had to come up with our own
     * method of doing it.
     * This function was deprecated in phpBB 2.0.18
     */
    function bbcode_array_pop(&$stack)
    {
       
    $arrSize count($stack);
       
    $x 1;

       while(list(
    $key$val) = each($stack))
       {
          if(
    $x count($stack))
          {
                 
    $tmpArr[] = $val;
          }
          else
          {
                 
    $return_val $val;
          }
          
    $x++;
       }
       
    $stack $tmpArr;

       return(
    $return_val);
    }

    //
    // Smilies code ... would this be better tagged on to the end of bbcode.php?
    // Probably so and I'll move it before B2
    //
    function smilies_pass($message)
    {
        static 
    $orig$repl;

        if (!isset(
    $orig))
        {
            global 
    $db$board_config;
            
    $orig $repl = array();

            
    $sql 'SELECT * FROM ' SMILIES_TABLE;
            if( !
    $result $db->sql_query($sql) )
            {
                
    message_die(GENERAL_ERROR"Couldn't obtain smilies data"""__LINE____FILE__$sql);
            }
            
    $smilies $db->sql_fetchrowset($result);

            if (
    count($smilies))
            {
                
    usort($smilies'smiley_sort');
            }

            for (
    $i 0$i count($smilies); $i++)
            {
                
    $orig[] = "/(?<=.\W|\W.|^\W)" preg_quote($smilies[$i]['code'], "/") . "(?=.\W|\W.|\W$)/";
                
    $repl[] = '<img src="'$board_config['smilies_path'] . '/' $smilies[$i]['smile_url'] . '" alt="' $smilies[$i]['emoticon'] . '" border="0" />';
            }
        }

        if (
    count($orig))
        {
            
    $message preg_replace($orig$repl' ' $message ' ');
            
    $message substr($message1, -1);
        }
        
        return 
    $message;
    }

    function 
    smiley_sort($a$b)
    {
        if ( 
    strlen($a['code']) == strlen($b['code']) )
        {
            return 
    0;
        }

        return ( 
    strlen($a['code']) > strlen($b['code']) ) ? -1;
    }

    ?>
    Divvy Reviewed by Divvy on . [phpBB2] Disable [code] tag from BBCode hi guys, Can someone help me? I like to make a url clickable inside of a tags. I am using a database from an old forum and would like to disable all tags that appears in all posts. I only need this to make urls into links. So, If exists a easy way to make this, please let me know :) Thank you This is my includes/bbcode.php file: Rating: 5

  2.   Sponsored Links

  3.     
    #2
    Member
    Have you tried running it in SQL query?

    Maybe something like this perhaps?
    PHP Code: 
    update phpbb_posts set post_text replace (post_text'[CODE]''[URL]'
    Maybe there's an easier way. Wait for someone else to give their suggestions.

  4.     
    #3
    Member
    Hi Danny,

    Thank you for your reply and suggestion.
    But I dont want to make that, because If someone create a new post with the code tags I will have the same problem.

    Really need some modification in my bbcode.php file.

  5.     
    #4
    Member
    Please, someone?
    Need to make urls clickable inside the code tag...

    Anyone please?

  6.     
    #5
    Member
    I tried this:

    Find:
    PHP Code: 
    // [code] and [/code] for posting code (HTML, PHP, C etc etc) in your posts.
    $text bbencode_first_pass_pda($text$uid'[code]''[/code]'''true''); 
    Replace:
    PHP Code: 
    // [code] and [/code] for posting code (HTML, PHP, C etc etc) in your posts.
    //$text = bbencode_first_pass_pda($text, $uid, '[code]', '[/code]', '', true, ''); 
    But appears like that:
    http://i38.tinypic.com/v33io8.jpg

    Now only need to make the url clickable... If I put the url without the tags appears fine, but with tags and with the modification above, appears like I show in the link above.
    Can you make only the url clickable inside the code tag? Please?

  7.     
    #6
    Member
    Website's:
    litewarez.net litewarez.com triniwarez.com
    Hmmmm try this...

    FIND:
    Code: 
    bbencode_second_pass_code
    Then look about 20 lines down for:
    Code: 
    $replacement .= $after_replace;
    AND REPLACE WITH:
    Code: 
    $replacement .= make_clickable($after_replace);
    Shot in the dark tho
    Join Litewarez.net today and become apart of the community.
    Unique | Clean | Advanced (All with you in mind)
    Downloads | Webmasters


    Notifications,Forum,Chat,Community all at Litewarez Webmasters


  8.     
    #7
    Member
    hmmmm didn't work! but thanks for trying mate

  9.     
    #8
    Respected Developer
    Website's:
    X4B.org
    If that doesnt work I have a method, use perl regular expressions

    Something like this maybe
    Code: 
    $replacement = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '<a href="$1">$1</a>', $replacement);

  10.     
    #9
    Member
    hi SplitIce,

    Thank you for your reply.
    That didnt work also... but thanks for trying mate

    After I made that modification, the post appears like that:
    http://i37.tinypic.com/334olfk.jpg

    Anymore suggestions?

  11.     
    #10
    Respected Developer
    Website's:
    X4B.org
    Try:

    $replacement .= preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '<a href="$1">$1</a>', $after_replace);

Page 1 of 2 12 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. [Buying] Datalife modify the bbcode [code]
    By Fala7er in forum Completed Transactions
    Replies: 0
    Last Post: 29th Oct 2011, 01:56 PM
  2. how to disable tag [code] in VB 3.8.7
    By warung giras in forum Tutorials and Guides
    Replies: 3
    Last Post: 2nd Oct 2011, 12:08 PM
  3. BBcode and Html post code generator - .NET version
    By gamelord in forum Webmaster Resources
    Replies: 7
    Last Post: 3rd Feb 2011, 02:24 AM
  4. Code BBcode IPB 3
    By Xman in forum IP.Board
    Replies: 10
    Last Post: 18th Jul 2010, 03:16 PM
  5. Disable BBCode withing Code and Quote Tags
    By napps in forum vBulletin
    Replies: 0
    Last Post: 15th Dec 2009, 12:55 PM

Tags for this Thread

BE SOCIAL