Jump to content

[SOLVED] Wont work?


Pezmc

Recommended Posts

I have taken this script and improved it from the php tutorials website this is the code atm,
[code=php:0]<?php
function bbcode_format ($str) {
   
    $str = htmlentities($str);
   
    $simple_search = array(
                '/[br]/is',
                '/[b](.*?)[/b]/is',
                '/[i](.*?)[/i]/is',
                '/[u](.*?)[/u]/is',
                '/[myurl=(.*?)](.*?)[/myurl]/is',
                '/[url=http://(.*?)](.*?)[/url]/is',
                '/[align=(left|center|right)](.*?)[/align]/is',
                '/[img]http://(.*?)[/img]/is',
                '/[mymail=(.*?)](.*?)[/mymail]/is',
                '/[mail](.*?)[/mail]/is',
                '/[font=(.*?)](.*?)[/font]/is',
                '/[size=(.*?)](.*?)[/size]/is',
              '/[codearea](.*?)[/codearea]/is',
              '/[mycode](.*?)[/mycode]/is',
              '/[p](.*?)[/p]/is'                );

    $simple_replace = array(
                //added line break
              '<br />',
                '<strong>$1</strong>',
                '<em>$1</em>',
                '<u>$1</u>',
                // added nofollow to prevent spam
                '<a href="$1" rel="nofollow" title="$2 - $1">$2</a>',
                '<a href="$1" rel="nofollow" title="$1">$1</a>',
                '<div style="text-align: $1;">$2</div>',
                //added alt attribute for validation
                '<img src="$1" alt="" />',
                '<a href="mailto:$1">$2</a>',
                '<a href="mailto:$1">$1</a>',
                '<span style="font-family: $1;">$2</span>',
                '<span style="font-size: $1;">$2</span>',
                '<span style="color: $1;">$2</span>',
                //added textarea for code presentation
                '<textarea class="code_container" rows="30" cols="70">$1</textarea>',
                //added pre class for code presentation
                '<pre class="code">$1</pre>',
                //added paragraph
                '<p>$1</p>'              );
    // Do simple BBCode's
    $str = preg_replace ($simple_search, $simple_replace, $str);
    // Do <blockquote> BBCode
    $str = bbcode_quote ($str);
    $str = str_replace ('<br />','', $str);
    return $str;
}



function bbcode_quote ($str) {
//added div and class for quotes
    $open = '<blockquote><div class="quote">';
    $close = '</div></blockquote>';
    // How often is the open tag?
    preg_match_all ('/[quote]/i', $str, $matches);
    $opentags = count($matches['0']);
    // How often is the close tag?
    preg_match_all ('/[/quote]/i', $str, $matches);
    $closetags = count($matches['0']);
    // Check how many tags have been unclosed
    // And add the unclosing tag at the end of the message
    $unclosed = $opentags - $closetags;
    for ($i = 0; $i < $unclosed; $i++) {
        $str .= '</div></blockquote>';
    }
    // Do replacement
    $str = str_replace ('[' . 'quote]', $open, $str);
    $str = str_replace ('[/' . 'quote]', $close, $str);
    return $str;
}

bbcode_format("I aint lame");
bbcode_format("Tester [b]bold[/b] [i]ittalic[/i] [u]under[/u]");

?>
[/code]

However this just produces a HUGE error message!
[code]
Warning: preg_replace(): Unknown modifier 'z' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'c' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'y' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'p' in /home/www/shogans.com/new.php on line 47

Warning: preg_match_all(): Unknown modifier 'q' in /home/www/shogans.com/new.php on line 64

Warning: preg_replace(): Unknown modifier 'b' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier ']' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier ']' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'y' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'r' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'a' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'g' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'y' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'a' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'f' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'z' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'c' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'y' in /home/www/shogans.com/new.php on line 47

Warning: preg_replace(): Unknown modifier 'p' in /home/www/shogans.com/new.php on line 47

Warning: preg_match_all(): Unknown modifier 'q' in /home/www/shogans.com/new.php on line 64
[/code]

I have checked the code and I can't see why this is happening can anyone see????
Please help
Link to comment
https://forums.phpfreaks.com/topic/30553-solved-wont-work/
Share on other sites

lotta stuff you have to escape to keep the regex from reading it as a modifier ;) the [ the ] and the / notably....

this one gives me no errors, no promise that it WORKS though as I haven't checked for syntax errors, but I've excaped everything I could think of for you, be sure to look it over.. as I said, no promises I got everything...

[code=php:0]
<?php
function bbcode_format ($str) {
   
    $str = htmlentities($str);
   
    $simple_search = array(
                '/\[br\]/is',
                '/\[b\](.*?)\[\/b\]/is',
                '/\[i\](.*?)\[\/i\]/is',
                '/\[u\](.*?)\[\/u\]/is',
                '/\[myurl=(.*?)\](.*?)\[\/myurl\]/is',
                '/\[url=http://http:\/\/(.*?)\](.*?)\[\/url\]/is',
                '/\[align=(left|center|right)\](.*?)\[\/align\]/is',
                '/\[img\]http:\/\/(.*?)\[\/img\]/is',
                '/\[mymail=(.*?)\](.*?)\[\/mymail\]/is',
                '/\[mail\](.*?)\[\/mail\]/is',
                '/\[font=(.*?)\](.*?)\[\/font\]/is',
                '/\[size=(.*?)\](.*?)\[\/size\]/is',
              '/\[codearea\](.*?)\[\/codearea\]/is',
              '/\[mycode\](.*?)\[\/mycode\]/is',
              '/\[p\](.*?)\[\/p\]/is'                );

    $simple_replace = array(
                //added line break
              '<br />',
                '<strong>$1</strong>',
                '<em>$1</em>',
                '<u>$1</u>',
                // added nofollow to prevent spam
                '<a href="$1" rel="nofollow" title="$2 - $1">$2</a>',
                '<a href="$1" rel="nofollow" title="$1">$1</a>',
                '<div style="text-align: $1;">$2</div>',
                //added alt attribute for validation
                '<img src="$1" alt="" />',
                '<a href="mailto:$1">$2</a>',
                '<a href="mailto:$1">$1</a>',
                '<span style="font-family: $1;">$2</span>',
                '<span style="font-size: $1;">$2</span>',
                '<span style="color: $1;">$2</span>',
                //added textarea for code presentation
                '<textarea class="code_container" rows="30" cols="70">$1</textarea>',
                //added pre class for code presentation
                '<pre class="code">$1</pre>',
                //added paragraph
                '<p>$1</p>'              );
    // Do simple BBCode's
    $str = preg_replace ($simple_search, $simple_replace, $str);
    // Do <blockquote> BBCode
    $str = bbcode_quote ($str);
    $str = str_replace ('<br />','', $str);
    return $str;
}



function bbcode_quote ($str) {
//added div and class for quotes
    $open = '<blockquote><div class="quote">';
    $close = '</div></blockquote>';
    // How often is the open tag?
    preg_match_all ('/\[quote\]/i', $str, $matches);
    $opentags = count($matches['0']);
    // How often is the close tag?
    preg_match_all ('/\[\/quote\]/i', $str, $matches);
    $closetags = count($matches['0']);
    // Check how many tags have been unclosed
    // And add the unclosing tag at the end of the message
    $unclosed = $opentags - $closetags;
    for ($i = 0; $i < $unclosed; $i++) {
        $str .= '</div></blockquote>';
    }
    // Do replacement
    $str = str_replace ('\[' . 'quote\]', $open, $str);
    $str = str_replace ('\[\/' . 'quote\]', $close, $str);
    return $str;
}

bbcode_format("I aint lame");
bbcode_format("Tester [b]bold[/b] [i]ittalic[/i] [u]under[/u]");

?>
[/code]

hopefully that fixes your problem :X
Link to comment
https://forums.phpfreaks.com/topic/30553-solved-wont-work/#findComment-140670
Share on other sites

You pasted the same thing  ;)

But thanks for the help however my script now just diplays a blank page??

[code=php:0]
<?php
function bbcode_format ($str) {
   
    $str = htmlentities($str);
   
    $simple_search = array(
                '/\[br\]/is',
                '/\[b\](.*?)\[\/b\]/is',
                '/\[i\](.*?)\[\/i\]/is',
                '/\[u\](.*?)\[\/u\]/is',
                '/\[myurl=(.*?)\](.*?)\[\/myurl\]/is',
                '/\[url=http://http:\/\/(.*?)\](.*?)\[\/url\]/is',
                '/\[align=(left|center|right)\](.*?)\[\/align\]/is',
                '/\[img\]http:\/\/(.*?)\[\/img\]/is',
                '/\[mymail=(.*?)\](.*?)\[\/mymail\]/is',
                '/\[mail\](.*?)\[\/mail\]/is',
                '/\[font=(.*?)\](.*?)\[\/font\]/is',
                '/\[size=(.*?)\](.*?)\[\/size\]/is',
              '/\[codearea\](.*?)\[\/codearea\]/is',
              '/\[mycode\](.*?)\[\/mycode\]/is',
              '/\[p\](.*?)\[\/p\]/is'                );

    $simple_replace = array(
                //added line break
              '<br />',
                '<strong>$1</strong>',
                '<em>$1</em>',
                '<u>$1</u>',
                // added nofollow to prevent spam
                '<a href="$1" rel="nofollow" title="$2 - $1">$2</a>',
                '<a href="$1" rel="nofollow" title="$1">$1</a>',
                '<div style="text-align: $1;">$2</div>',
                //added alt attribute for validation
                '<img src="$1" alt="" />',
                '<a href="mailto:$1">$2</a>',
                '<a href="mailto:$1">$1</a>',
                '<span style="font-family: $1;">$2</span>',
                '<span style="font-size: $1;">$2</span>',
                '<span style="color: $1;">$2</span>',
                //added textarea for code presentation
                '<textarea class="code_container" rows="30" cols="70">$1</textarea>',
                //added pre class for code presentation
                '<pre class="code">$1</pre>',
                //added paragraph
                '<p>$1</p>'              );
    // Do simple BBCode's
    $str = preg_replace ($simple_search, $simple_replace, $str);
    // Do <blockquote> BBCode
    $str = bbcode_quote ($str);
    $str = str_replace ('<br />','', $str);
    return $str;
}



function bbcode_quote ($str) {
//added div and class for quotes
    $open = '<blockquote><div class="quote">';
    $close = '</div></blockquote>';
    // How often is the open tag?
    preg_match_all ('/\[quote\]/i', $str, $matches);
    $opentags = count($matches['0']);
    // How often is the close tag?
    preg_match_all ('/\[\/quote\]/i', $str, $matches);
    $closetags = count($matches['0']);
    // Check how many tags have been unclosed
    // And add the unclosing tag at the end of the message
    $unclosed = $opentags - $closetags;
    for ($i = 0; $i < $unclosed; $i++) {
        $str .= '</div></blockquote>';
    }
    // Do replacement
    $str = str_replace ('\[' . 'quote\]', $open, $str);
    $str = str_replace ('\[\/' . 'quote\]', $close, $str);
    return $str;
}

bbcode_format("I aint lame");
bbcode_format("Tester [b]bold[/b] [i]ittalic[/i] [u]under[/u]");

?>
[/code]
Link to comment
https://forums.phpfreaks.com/topic/30553-solved-wont-work/#findComment-140710
Share on other sites

y not try str_replace

example
[code]
<?php

$BBCode = array(
# Bold
'[b]' => '<B>',
'[/b]' => '</B>',
# Italic
'[i]' => '<I>',
'[/i]' => '</I>',
# Underline
'[u]' => '<U>',
'[/u]' => '</U>',
# Image
'[img]' => '<IMG SRC="',
'[/img]' => '">',
# Link
'[url=' => '<A HREF="',
']' => '">',
'[/url]' => '</A>',
# smilies
':)' => '<img src="/images/smilie.gif" />',
':(' => '<img src="/images/sad.gif" />'
# note the missing comma after the last line above
);

?>

<?php

function Convert_BBCode( $t )
{
  $search = array_keys( $GLOBALS['BBCodes'] );
  $t = str_replace( $search, $GLOBALS['BBCode'], $t );
  return $t;
}

?>

<?php
echo .Convert_BBCodes( $text ).;
?>
[/code]
Link to comment
https://forums.phpfreaks.com/topic/30553-solved-wont-work/#findComment-141233
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.