View Single Post
  #4  
Old 08-25-2012, 12:08 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I think all your issues have to do with special (meta) characters. Some of the character that are included in your variables have special meaning when in a preg pattern. For instance, and "." means "match any character". You probably know that "\b" means match a word boundary, so when $console['chat'] = "...", the pattern says "match any 3 character word", so it's probably matching "BOT". In the second one you mention, '|' has a special meaning. If you want to know more, it's all explained here: http://us2.php.net/manual/en/referen...ern.syntax.php

You could solve that by using the function preg_quote(), which makes sure that any special characters are 'escaped'. So for instance, your first example would be:
Code:
if (preg_match('/\b{' . preg_quote($console['chat'], '/') . '}\b/', 'BOT call'))

I left in the { and } chars, I don't know if you want to match those or if they were just there to surround the variable. If you don't want them to match something, then you should take them out (they have another special meaning in patterns, and aren't used to enclose variables).


However, like you mentioned, if you have no need of the "power" of the preg functions, you should use strpos or something like that. I notice that a couple of your patterns have "\b" - if it's important that you only match the separate word (and if it could be at the start or end so it may or may not have a space before and after it), then you may need a preg function. It's hard to say without knowing exactly what you're doing.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01181 seconds
  • Memory Usage 1,766KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_code
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • 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
  • showpost_complete