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 02-22-2009, 10:56 PM
DISLEX DISLEX is offline
 
Join Date: Apr 2006
Location: Odessa
Posts: 107
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default What am I doing wrong with this preg_match?

I'm working on a plugin and I'm trying to pull out quotes from a post message ($post[pagetext]). For some reason, it works if there's a quote->img->/img->/quote combination, but if there is any text inside the quote WITH an image, it won't pick it up.

here's my regex: $qc = preg_match_all("/(\[quote)(.*)(\[\/quote\])/i", $post[pagetext], $quotematches, PREG_SET_ORDER);

here are some examples of the regex results:

Quote:
Originally Posted by example post where $qc = 1
Quote:
Originally Posted by user
hey!
hey, how's it going?
In the above, it would detect the quoted message by "user"

Quote:
Originally Posted by another example where $qc = 1
Quote:
Originally Posted by user2
oh cool I'm not color blind
in the above, it still detects the quote

HOWEVER, in the following:

Quote:
Originally Posted by example where $qc = 0
Quote:
Originally Posted by user2
Look at this, if you can't see the '5' you might be colorblind!
oh cool I'm not color blind
it doesn't detect the quote. I've noticed that it doesn't catch a quote if there's text AND an image inside of the quote. How on earth is that not a match?
Reply With Quote
  #2  
Old 02-23-2009, 01:56 AM
hambil's Avatar
hambil hambil is offline
 
Join Date: Jun 2004
Location: Seattle
Posts: 1,719
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I think you are forgetting to deal with the new line between the text and the image
Reply With Quote
  #3  
Old 02-24-2009, 04:50 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Have a look at how vBulletin finds quotes in strip_quotes().
Reply With Quote
  #4  
Old 03-03-2009, 09:40 PM
DISLEX DISLEX is offline
 
Join Date: Apr 2006
Location: Odessa
Posts: 107
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by hambil View Post
I think you are forgetting to deal with the new line between the text and the image
does (.*) not match newlines?
Reply With Quote
  #5  
Old 03-05-2009, 05:08 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You need to add a PCRE modifier for it to count new lines as well. IIRC, the modifier is m. However, you should still be using vBulletin's method of detecting quotes, as it does not use costly regex functions.
Reply With Quote
  #6  
Old 03-05-2009, 10:51 PM
DISLEX DISLEX is offline
 
Join Date: Apr 2006
Location: Odessa
Posts: 107
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Dismounted View Post
You need to add a PCRE modifier for it to count new lines as well. IIRC, the modifier is m. However, you should still be using vBulletin's method of detecting quotes, as it does not use costly regex functions.
it says that if there are no start-of-line (^) or end-of-line ($) modifiers, then 'm' has no effect:

http://us2.php.net/pcre.pattern.modifiers
Reply With Quote
  #7  
Old 03-05-2009, 10:57 PM
TigerC10's Avatar
TigerC10 TigerC10 is offline
 
Join Date: Apr 2006
Location: Austin, TX
Posts: 616
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

No, you add the m modifier at the end, next to the i for case insensitive matches. Kind of like the g modifier (makes it "global", which matches more than one on a single line)...
Reply With Quote
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 06:46 PM.


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.06382 seconds
  • Memory Usage 2,224KB
  • 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_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (7)post_thanks_box
  • (7)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (7)post_thanks_postbit_info
  • (7)postbit
  • (7)postbit_onlinestatus
  • (7)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
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete