vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Trying to fix QUOTES from Invision import (https://vborg.vbsupport.ru/showthread.php?t=306953)

pattycake 01-12-2014 05:48 PM

Trying to fix QUOTES from Invision import
 
All of the previous quotes in my posts from my Invision import are fubarred. I have found several methods that use preg_replace to fix the post, but none of them have converted anything. The problem is, I don't know enough php to understand the preg_replace statements so I can fix the posts.

Here is one I pulled from a program called QuoteFix.php
Code:

function translatesmilies($text) {
  $text = preg_replace('#<!--QuoteBegin-{1,2}([^"]*)\+-->([^"]*)<!--QuoteEBegin-->#si', "[quote]Originally posted by \\1\n[b]", $text);
  $text = preg_replace('#<!--QuoteBegin-{1,2}([^"]*)\+([^"]*)-->([^"]*)<!--QuoteEBegin-->#si', "[quote]Originally posted by \\1@\\2\n[b]", $text);
  $text = preg_replace('#<img src=\'([^"]*)\' border=\'0\' alt=\'user posted image\'(\s/)?>#siU', '[img]\\1[/img]', $text);
  return $text;
}


Here is an actual post with a quote, as it's stored in the database:
Code:

<table align="center" border="0" cellpadding="3" cellspacing="1" width="95%">
<tbody><tr><td>
QUOTE (JSK @ Sep 25 2013, 09:09 PM)</td></tr>
<tr><td id="QUOTE"><!--QuoteEBegin--> <!--QuoteBegin-gmoss+Sep 25 2013, 03:52 PM-->
        <table align="center" border="0" cellpadding="3" cellspacing="1" width="95%">
                <tbody><tr><td>QUOTE (gmoss @ Sep 25 2013, 03:52 PM)</td></tr><tr><td id="QUOTE"><!--QuoteEBegin--> on a small bore 2 stroke, it hurts me as much as helps. <!--QuoteEnd--></td></tr>
                </tbody>
        </table><!--QuoteEEnd-->
I agree and wouldn't put one on my small bore 2-stroke, the clutch/rider relationship is too intimate. However if I was on a kick-start only 4-stroke I might consider one. <!--QuoteEnd-->
</td></tr>
</tbody>
</table> <!--QuoteEEnd-->
 Not sure I understand this.
The Rekluse does not change the rider/clutch relationship at all, except when you get below say 2500 rpms.  No small bore bike is going to be making any power that low anyway.  You can slip the clutch normally.

If I run the above preg_replace, it doesn't find anything to change.
I have tried to undestand the preg_replace statements but for the life of me, I just don't standstand the syntax.

Any help would be appreciated.

Max Taxable 01-12-2014 06:01 PM

Not sure but I think you might instead want a db query for this.

pattycake 01-12-2014 06:24 PM

i was just trying to do a quick test by assigning the data that was in the database to a var, and then running the preg_replace on that var so I can see before and after. I do a $test= on that data in the box up above and then do the preg_replace on $test


what exactly does this preg_replace do?
Code:

$text = preg_replace('#<!--QuoteBegin-->([^"]*)<!--QuoteEBegin-->#siU', '[quote][b]', $text);
I understand the # delimiters, but not that stuff inside the [], or the siU at the end, or the two QuoteBegin and QuoteEBegin.... why are there two of them?

I do know that if I try to run this on my var, it doesn't change anything.

same for this one:
Code:

$text = preg_replace('#<!--QuoteBegin-{1,2}([^"]*)\+-->([^"]*)<!--QuoteEBegin-->#si', "[quote]Originally posted by \\1\n[b]", $text);
what does that {1,2} thingie?

kh99 01-12-2014 06:30 PM

Well, it look like the patterns are trying to match <!--QuoteBegin-some stuff--><!--QuoteEBegin-->, but in the post the QuoteEBegin comes first (I have no idea what any of that stuff means so I can't say why that would be).

You say that post is from the database - which column? I'm wondering why it has html in it (normally the posts in the database have bbcode tags).

kh99 01-12-2014 06:35 PM

Quote:

Originally Posted by pattycake (Post 2473855)
I understand the # delimiters, but not that stuff inside the [], or the siU at the end, or the two QuoteBegin and QuoteEBegin.... why are there two of them?
...

what does that {1,2} thingie?

You might want to look at this: http://www.php.net/manual/en/referen...ern.syntax.php
[...] = "character class" (the ^ negates it), {1,2} = "repetition", and siU are "internal options settings".


ETA: .. and this: http://www.php.net/manual/en/function.preg-replace.php

pattycake 01-12-2014 06:43 PM

Quote:

Originally Posted by kh99 (Post 2473859)
Well, it look like the patterns are trying to match <!--QuoteBegin-some stuff--><!--QuoteEBegin-->, but in the post the QuoteEBegin comes first (I have no idea what any of that stuff means so I can't say why that would be).

You say that post is from the database - which column? I'm wondering why it has html in it (normally the posts in the database have bbcode tags).

it is the "post" column in the ibf_posts table - the database is from a very old version of Invision - apparently, even though HTML was turned off, thats the way they store the actual post. I believe they used macros to convert things like <!--QuoteEBegin--> on the fly.

hmmmm... maybe thats where I should be looking... at those "on-the-fly" conversions that the Invision software used

kh99 01-12-2014 06:47 PM

Quote:

Originally Posted by pattycake (Post 2473865)
it is the "post" column in the ibf_posts table - the database is from a very old version of Invision - apparently, even though HTML was turned off, thats the way they store the actual post.

Oh, I see. I thought you already had them in the vbulletin database.

pattycake 01-12-2014 06:55 PM

well, yes, I do... i copied them straight from the invision table into the posts table of vbulletin.

In the Invision table, it was ibf_posts, column name post
In the vbulletin table, it is vb_kt_post, column name pagetext

I know... bad move to do a direct copy but I did it so now I have a mess to clean up.

--------------- Added [DATE]1389560223[/DATE] at [TIME]1389560223[/TIME] ---------------

I went inside the Invision code, in a program called post_parser.php

In that code, I found the following:
Code:

$txt = preg_replace( "#<!--QuoteBegin-->(.+?)<!--QuoteEBegin-->#"                , '[QUOTE]'        , $txt );
$txt = preg_replace( "#<!--QuoteBegin-{1,2}([^>]+?)\+([^>]+?)-->(.+?)<!--QuoteEBegin-->#"  , "[QUOTE=\\1,\\2]" , $txt );
$txt = preg_replace( "#<!--QuoteBegin-{1,2}([^>]+?)\+-->(.+?)<!--QuoteEBegin-->#"      , "[QUOTE=\\1]" , $txt );

there's another line for QuoteEEnd but it won't paste into the code above

I think this is the key to a correct conversion.

--------------- Added [DATE]1389562663[/DATE] at [TIME]1389562663[/TIME] ---------------

I got it... I used that exact code that was in the post_parser.php and, it converted it clean as a whistle... removed all the TABLE stuff, TD stuff, etc, and made it work as vbulletin expects.

Case Closed,
Ticket-be-gone
We-be-happy

-pat-

--------------- Added [DATE]1389593985[/DATE] at [TIME]1389593985[/TIME] ---------------

Well crud... I [thought] I had it... the quotes are definitely fixed, but now I have another friggin preg_replace statement

here is what needs to be converted:
Code:

<img src='http://img2.timg.co.il/forums/1_172631546.JPG' border='0' alt='user posted image' />
here is my preg-replace:
Code:

$txt = preg_replace( "#<img src=[\"'](\S+?)['\"].+?".">#"          , "\[IMG\]\\1\[/IMG\]"
and here is what it renders:
Code:

[IMG]'http://img2.timg.co.il/forums/1_172631546.JPG[/IMG]
Notice that apostrophe right after the first ] just before the http?
If I get rid of that booger, it'll be clean.

Teach me, guide me Grasshopper...

.


All times are GMT. The time now is 06:25 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01607 seconds
  • Memory Usage 1,746KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (8)bbcode_code_printable
  • (3)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (8)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete