View Full Version : How to eliminate <br>'s in [code]?
When posting something using the code tags then this effectively puts <pre> tags around the text, however because there is a <br> at the end of each line this code ends up double spaced. How can I change things to not print <br>'s when the text is within code tags?
Actually, I would like to know how to get around this as well... I have extensive use of the [ CODE ] tag on my UBB and noticed this problem after doing an import.
-Chris
Mark, what version of vB are you on? I know John had changed this in version 1.1.3b3 - although there is one nesting error:
in global.php, around line 262 (in an unhacked one), it now says:
$bbcode=str_replace("</code>\r\n","<hr></pre><normalfont></blockquote>",$bbcode);
$bbcode=str_replace("</code>","<hr></pre><normalfont></blockquote>",$bbcode);
but it should be:
$bbcode=str_replace("</code>\r\n","<hr></pre></blockquote><normalfont>",$bbcode);
$bbcode=str_replace("</code>","<hr></pre></blockquote><normalfont>",$bbcode);
(i.e. nesting error - <normalfont> should come after the closing </blockquote> and not before).
In previous versions the blockquote and pre were in different order, which was less aesthetic and added a redundent space line. But in version 1.1.3b3 John changed it, so I'm not sure why you would have that space at all
(on edit: note that I replace [ /code ] with </code> in the above sections, because otherwise they would render as vB codes on this forum.)
[Edited by bira on 07-21-2000 at 09:57 PM]
bira:
Shouldn't the preceding:
$bbcode=str_replace("<code>\r\n","</normalfont><blockquote><pre><smallfont>code:</smallfont><hr>",$bbcode);
$bbcode=str_replace("<code>","</normalfont><blockquote><pre><smallfont>code:</smallfont><hr>",$bbcode);
also have the order of normalfont and blockquote reversed?
Parker
[Fixed up the code tags so it didn't parse -Ed]
[Edited by Ed Sullivan on 07-22-2000 at 07:18 PM]
nooo, no, no, no. You first close the normalfont tag and then open the blockquote "session". Then, you first close the blockquote "session" and reopen the normalfont tage.
HTML nesting as simple:
<a><b><c> </c></b></a>
or
<a></a><b></b> etc.
You can't have <a><b></a></b> (which is what you're suggesting).
Anyways, it's no biggie.
As for the additional <br>: that space comes from using <blockquote></blockquote> to begin with. It adds a line automatically, which is rendered by the forum as a <br>. If it bothers you THAT much, you can simply remove from the global.php the <blockquote></blockquote> and leave it as <pre></pre> only. This will display the code correctly, it just won't centralize it in the middle of the post.
The way that whole thing is written is screwy in that file.
I understanding the nesting bit but it has the </normalfont>
and <blockquote> together and the <normalfont> and </blockquote> together. The previous is with [ code ] and the later is with [ /code ].
The <normalfont> and <blockquote> should go with the [ code ] line and the </blockquote> and </normalquote> should go with the [ /code ] line.
Did I make that as muddy as possible? :)
Parker
No nono, I think you want to kill the <normalfont> before the <blockquote> so that the text is displayed in a <pre>-style (sorry, can't think of the word now). Then, just re open it for the rest of the message.
Parker, the first </font> is intended to close the normal message font, which is not suitable for prefixed (pre) text. Then, you start the "pre" procedure.
Let me try to illustrate it:
user's normal post is in a 'normalfont'.
</ normalfont>
-----------------------------------
<blockquote>
< smallfont>Code:</ smallfont>
<pre>
The Code
</pre>
</blockquote>
------------------------------------
< normalfont>
back to normalfont post.
Hope that explains the html progress better.
This is still a problem, and what was said above does not fix it.
The problem lies here, I believe:
// get rid of stray <br> tags in the code - upsets older browsers (IE 4.7
$codebits=explode("</normalfont><pre><smallfont>code:</smallfont></normal
list($key,$bbcode)=each($codebits);
$bbcode=nl2br($bbcode);
while (list($key,$val)=each($codebits)) {
$sbbits=explode("</blockquote><hr></pre><normalfont>",$val);
$newbits=$sbbits[0]."</blockquote><hr></pre><normalfont>".nl2br($sbbits
$bbcode.="</normalfont><pre><smallfont>code:</smallfont></normalfont><h
}
When in <pre>, we should not be adding br codes.
-ChadG
Ok...I finally found time to look at this. The problem was with tags not matching up when exploding. So there are actually several bugs throughout this code. If you just replace the section of code in question with the code below, all should be good.
// do code tags
$bbcode=eregi_replace("code\\]","code]",$bbcode); // make lower case
$bbcode=str_replace("<code>\r\n","</normalfont><blockquote><pre><smallfont>code:</smallfont><hr>",$bbcode);
$bbcode=str_replace("<code>","</normalfont><blockquote><pre><smallfont>code:</smallfont><hr>",$bbcode);
$bbcode=str_replace("</code>\r\n","<hr></pre></blockquote><normalfont>",$bbcode);
$bbcode=str_replace("</code>","<hr></pre></blockquote><normalfont>",$bbcode);
if ($dobbimagecode==1) {
$bbcode=eregi_replace("\\[img\\]([^\\[]*)\\[/img\\]","<img src=\"\\1\" border=0></a>",$bbcode);
}
// get rid of stray <br> tags in the code - upsets older browsers (IE 4.72 reported problems)
$codebits=explode("</normalfont><blockquote><pre><smallfont>code:</smallfont><hr>",$bbcode);
list($key,$bbcode)=each($codebits);
$bbcode=nl2br($bbcode);
while (list($key,$val)=each($codebits)) {
$sbbits=explode("<hr></pre></blockquote><normalfont>",$val);
$newbits=$sbbits[0]."<hr></pre></blockquote><normalfont>".nl2br($sbbits[1]);
$bbcode.="</normalfont><blockquote><pre><smallfont>code:</smallfont><hr>".$newbits;
}
NOTE: <code> is suppose to be surrounded by [] instead.
Now...if we can fix this on here. The double spacing is quite annoying.
-ChadG
[Edited by ChadG on 10-16-2000 at 11:20 PM]
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.