Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 01-12-2014, 06:48 PM
pattycake pattycake is offline
 
Join Date: Jan 2009
Posts: 97
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default 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.
Reply With Quote
  #2  
Old 01-12-2014, 07:01 PM
Max Taxable's Avatar
Max Taxable Max Taxable is offline
 
Join Date: Feb 2011
Posts: 3,134
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Not sure but I think you might instead want a db query for this.
Reply With Quote
  #3  
Old 01-12-2014, 07:24 PM
pattycake pattycake is offline
 
Join Date: Jan 2009
Posts: 97
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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?
Reply With Quote
  #4  
Old 01-12-2014, 07:30 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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).
Reply With Quote
  #5  
Old 01-12-2014, 07:35 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by pattycake View Post
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
Reply With Quote
  #6  
Old 01-12-2014, 07:43 PM
pattycake pattycake is offline
 
Join Date: Jan 2009
Posts: 97
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kh99 View Post
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
Reply With Quote
  #7  
Old 01-12-2014, 07:47 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by pattycake View Post
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.
Reply With Quote
  #8  
Old 01-12-2014, 07:55 PM
pattycake pattycake is offline
 
Join Date: Jan 2009
Posts: 97
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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...

.
Reply With Quote
Благодарность от:
Max Taxable
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 04:06 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04286 seconds
  • Memory Usage 2,251KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (8)bbcode_code
  • (3)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (8)post_thanks_box
  • (1)post_thanks_box_bit
  • (8)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (8)post_thanks_postbit_info
  • (8)postbit
  • (8)postbit_onlinestatus
  • (8)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete