Forum Moderators: coopster

Message Too Old, No Replies

BBCode preg replace problems

Repeats close tag as start tag on next string

         

Stuperfied

1:53 am on May 4, 2008 (gmt 0)

10+ Year Member


For some reason the script is remembering the last tag used and repeating it as the start tag for the next string. Any ideas?
PS: I had to put spaces in the tags because the webmasterworld bbcode was recognising it and not displaying it at all. Also, the url regular expression isnt really the best, does anyone have a better one?

[code]
[u r l=http:/[smilestopper]/www.example.com][/u r l]
][/u r l]http:/[smilestopper]/www.example.com][/u r l]
[ size= ]The quick brown fox jumped over the lazy dog.[ /size ]
[ /size ]The quick brown fox jumped over the lazy dog.[ /size ]
[/code]

[code]
function swapTags($content) {
$patterns[0] = '/<b>/';
$patterns[1] = '/<\/b>/';
$patterns[2] = '/<u>/';
$patterns[3] = '/<\/u>/';
$patterns[4] = '/<i>/';
$patterns[5] = '/<\/i>/';
$patterns[6] = '/<font color=("¦\')(#\w+)("¦\')>/';
$patterns[7] = '/<font size=("¦\')(\d+)("¦\')>/';
$patterns[8] = '/<\/font><!\-\- \/color \-\->/';
$patterns[9] = '/<\/font><!\-\- \/size \-\->/';
$patterns[10] = '/<br \/>/';
$patterns[11] = '/<a href=("¦\')(http[s]:\/\/.*)("¦\')>(.+)<\/a>/';
$replacements[0] = '[ b ]';
$replacements[1] = '[ /b ]';
$replacements[2] = '[ u ]';
$replacements[3] = '[ /u ]';
$replacements[4] = '[ i ]';
$replacements[5] = '[ /i ]';
$replacements[6] = '[ color=$1$2$3 ]';
$replacements[7] = '[ size=$1$2$3 ]';
$replacements[8] = '[ /color ]';
$replacements[9] = '[ /size ]';
$replacements[10] = Chr(13).Chr(10);
$replacements[11] = '[ url=$1$2$3 ]$4[ /url ]';
ksort($patterns);
ksort($replacements);
$content = preg_replace($patterns, $replacements, $content);
return $content;
[/code]

[1][[b]edited by[/b]: Stuperfied at 2:01 am (utc) on May 4, 2008][/1]

Stuperfied

9:23 am on May 5, 2008 (gmt 0)

10+ Year Member



My mistake, was a different script causing it. Cant understand why I thought it was this one.