PDA

View Full Version : Preventing !!!!!!! ???????


oldengine
05-22-2005, 07:29 PM
Is there any way to knock out multiple punctuation like this??????????????

Damn, I hate posts like this!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Or sentences ~~~~~~~~~~~~~~ full of this.

akanevsky
05-22-2005, 07:45 PM
Of course. Use:
$searcharray = array("/([!]*)/si", "/([?]*)/si", "/([~]*)/si");
$replacearray = array("!", "?", "~");

$txt = preg_replace($searcharray, $replacearray, $txt);

oldengine
05-22-2005, 08:20 PM
Thank you for the tools! I'll see if I can apply them properly. :)

I would presume that functions_newpost.php would be a likely place to insert this. Picking the right spot might be tricky.

akanevsky
05-22-2005, 09:03 PM
In functions_bbcodeparse, find:

// ###################### Start bbcodeparse2 #######################
function parse_bbcode2($bbcode, $dohtml, $dobbimagecode, $dosmilies, $dobbcode, $iswysiwyg = 0, $donl2br = 1, $doresize = 1)
{
// parses text for vB code, smilies and censoring

global $DB_site, $vboptions, $bbuserinfo, $templatecache, $smiliecache;
global $html_allowed;

Add after:

$searcharray = array("/([!]*)/si", "/([?]*)/si", "/([~]*)/si");
$replacearray = array("!", "?", "~");

$bbcode = preg_replace($searcharray, $replacearray, $bbcode);

oldengine
05-23-2005, 02:29 AM
Text entered:

Title: This is a test!!!

Results: ~?~!~?~T~?~!~?~h~?~!~?~i~?~!~?~s~?~!~?~ ~?~!~?~i~?~!~?~s~?~!~?~ ~?~!~?~a~?~!~?~ ~?~!~?~t~?~!~?~e~?~!~?~s~?~!~?~t~?~!~?~.~?~!~?~ ~?~!~?~ ~?~!~?~!~?~ ~?~!~?~?~!~?~?~!~?~?~!~?~?~!~?~?~!~?~?~!~?~ ~?~!~?~~?~!~?~~?~!~?~~?~!~?~~?~!~?~~?~!~?~~?~!~?~

If you really look inside the above string, you'll see: This is a test!!!

For some reason, it comes back with a string like the above.

akanevsky
05-23-2005, 09:25 AM
My code is not supposed to parse those complicated strings of yours.
It is supposed to eliminate "!!!!!!!!!", "??????????" and "~~~~~~~~"...

Marco van Herwaarden
05-23-2005, 10:43 AM
Moved to vB3

Zero Tolerance
05-23-2005, 04:06 PM
This should fix the problem, find inside functions_bbcodeparse.php:
$searcharray = array("/([!]*)/si", "/([?]*)/si", "/([~]*)/si");

Replace With:
$searcharray = array("/([!]+)/si", "/([?]+)/si", "/([~]+)/si");

Save & Upload.

After testing the string:
OMG!!!!!!1!!!!!1~~~~~~~~~~1~~~~~~~~~~~~~~?????!!!? ????!!!

The output was:
OMG!1!1~1~?!?!

Eliminating all repeating characters (?, ~, !) to a single char. :)

- Zero Tolerance

oldengine
05-24-2005, 01:37 AM
Excellent! Thank you Dark Visor and Zero Tolerance!

Elenna
03-19-2007, 11:10 PM
What file(s) should I modify in 3.6.5 to have this work?

dbirosel
03-19-2007, 11:41 PM
Great help on that request. You guys should add that to the Mod Database!

TheMilkCarton
03-20-2007, 03:10 PM
Excellent! Thank you Dark Visor and Zero Tolerance!
Hahaha. Who is Dark Visor? :p Edit: Oh, that was two years ago? Maybe he had his name changed.. whoops. :o

Anyway.. my question. Is there any way to limit it so that it only starts limiting after so many characters? I think turning ?? into ? is a little too strict.

Perhaps something that turns ?????? into ???

I just realized this thread was started 2 years ago.. but someone bumped it so I might as well ask. :)

Elenna
03-20-2007, 04:48 PM
Sorry, that was me that bumped :) I'm not sure if I'm blind, but I'm not seeing the functions_bbcodeparse file. Has it been renamed or encorporated elsewhere?

I, too, would like for it to limit only after a certain amount, like MilkCarton suggested. Could this work with periods too? I know that ... and .... are gramatically appropriate, but I'd like to shorted ................. to ... .

Dismounted
03-21-2007, 05:47 AM
Off the top of my head, create a new plugin at 'parse_bbcode' or 'bbcode_parse' (forgot which one it is :p) and insert;
$searcharray = array("/([!]+)/si", "/([?]+)/si", "/([~]+)/si");
$replacearray = array("!", "?", "~");

$bbcode = preg_replace($searcharray, $replacearray, $bbcode);

TheMilkCarton
03-21-2007, 12:51 PM
Thanks Dismounted.. but what about changing '????????' to '???' Is this something that would be too difficult to code? :)

Edit: I couldn't get what you said to work. Although, there were only "bbcode_parse_start" and "bbcode_parse_complete" Unless I didn't see just plain old bbcode_parse

Elenna
03-21-2007, 02:50 PM
Thanks very much! I'd like to give this a try - but I admit I'm pretty dumb and new with vB. Which file should I edit to add in the code above?

Dismounted
03-22-2007, 06:42 AM
Thanks Dismounted.. but what about changing '????????' to '???' Is this something that would be too difficult to code? :)

Edit: I couldn't get what you said to work. Although, there were only "bbcode_parse_start" and "bbcode_parse_complete" Unless I didn't see just plain old bbcode_parse
1./ Find:
$replacearray = array("!", "?", "~");
Replace With:
$replacearray = array("!!!", "???", "~~~");

2./ bbcode_parse_complete

Thanks very much! I'd like to give this a try - but I admit I'm pretty dumb and new with vB. Which file should I edit to add in the code above?
Note 'plugin'. AdminCP > Plugins & Products > Add New Plugin > Pretty self-explanitory from there.

TheMilkCarton
03-22-2007, 08:26 AM
Well, I would figure that much, but the code you told me to put into the plugin doesn't work.. at all. :)

I've tried every combo of !!! and ??? and nothing ever changes.

Dismounted
03-22-2007, 10:17 AM
The variables have probably changed. I'll have a look.

TheMilkCarton
03-22-2007, 11:20 AM
Also, with $replacearray = array("!!!", "???", "~~~"); wouldn't it actually turn '!!' into '!!!' , '!!!' would stay the same, and then finally, '!!!!' would change to '!!!' I'd like to do it without lengthening !! or ??

Maybe I'm just misunderstanding the PHP involved.. :) I'm not much of a coder just yet. haha

Dismounted
03-23-2007, 09:07 AM
Changing the regex would fix that, but I'm too tired atm :p.

Elenna
03-27-2007, 03:22 AM
Any luck finding the correct variables?

oldengine
07-25-2010, 01:32 PM
Bumping this for more info now that I'm into 3.8.6.

My users still present the issue.

functions_bbcodeparse.php is no longer part of the system.