Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
  #1  
Old 01-23-2011, 02:16 PM
Digital Jedi's Avatar
Digital Jedi Digital Jedi is offline
 
Join Date: Oct 2006
Location: PopCulturalReferenceLand
Posts: 5,171
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default RegEx in Custom Profile Field

Having only worked with RegExes in AME, I see that vB handles them a bit differently. I want a Regex that matches typical YouTube URLs along with the extra stings that come along with them. I tried my Regex for my AME YouTube definition:

Code:
^http://[\w.]+youtube\.[\w]+/watch[\?\#!]+v=([\w-]+)[\w&;+=-]*[\#t=]*([\d]*)[&;10shdq=]*|^$
But vB gives me a preg-match error with the exclamation point in there. Didn't work escaping it, either. AME has it's own quirks with Regex, and that's where I learned how to do them. But I suspect that vB does it a little differently. This needs to match these kinds of URLs:

http://www.youtube.com/watch?v=is_b1ahWN3Q
http://www.youtube.com/watch?&v=is_b1ahWN3Q
http://www.youtube.com/watch#!v=is_b1ahWN3Q
http://www.youtube.com/watch?v=is_b1ahWN3Q&some_string=also_with_special_characters_&;+=-

And deep linking examples.

http://www.youtube.com/watch?v=is_b1ahWN3Q#t=5m
http://www.youtube.com/watch?v=is_b1ahWN3Q#t=5m7s
http://www.youtube.com/watch?v=is_b1ahWN3Q#t=120s

Or just be blank. Maybe my matches don't need to be this specific?
Reply With Quote
  #2  
Old 01-23-2011, 02:58 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This seems to work:

Code:
<?php
$pat = '@^http://[\w.]+youtube\.[\w]+/watch[\?\#!]+v=([\w-]+)[\w&;+=-]*[\#t=]*([\d]*)[&;10shdq=]*|^$@';

$strs = array('http://www.youtube.com/watch?v=is_b1ahWN3Q',
                'http://www.youtube.com/watch?&v=is_b1ahWN3Q',
                'http://www.youtube.com/watch#!v=is_b1ahWN3Q',
                'http://www.youtube.com/watch?v=is_b1ahWN3Q&some_string=also_with_special_characters_&;+=-',
                'http://www.youtube.com/watch?v=is_b1ahWN3Q#t=5m',
                'http://www.youtube.com/watch?v=is_b1ahWN3Q#t=5m7s',
                'http://www.youtube.com/watch?v=is_b1ahWN3Q#t=120s',
    );


foreach ($strs as $str)
{
    preg_match($pat, $str, $matches);
    print_r($matches);
    echo("<BR /><BR />\n");
}
?>

and I get this output:

Code:
Array ( [0] => http://www.youtube.com/watch?v=is_b1ahWN3Q [1] => is_b1ahWN3Q [2] => ) 

Array ( ) 

Array ( [0] => http://www.youtube.com/watch#!v=is_b1ahWN3Q [1] => is_b1ahWN3Q [2] => ) 

Array ( [0] => http://www.youtube.com/watch?v=is_b1ahWN3Q&some_string=also_with_special_characters_&;+=- [1] => is_b1ahWN3Q [2] => ) 

Array ( [0] => http://www.youtube.com/watch?v=is_b1ahWN3Q#t=5 [1] => is_b1ahWN3Q [2] => 5 ) 

Array ( [0] => http://www.youtube.com/watch?v=is_b1ahWN3Q#t=5 [1] => is_b1ahWN3Q [2] => 5 ) 

Array ( [0] => http://www.youtube.com/watch?v=is_b1ahWN3Q#t=120s [1] => is_b1ahWN3Q [2] => 120 )

It seems the second string doesn't match because the pattern doesn't allow for & where it appears in that string.
Reply With Quote
Reply

Thread Tools
Display Modes

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 11:01 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.03595 seconds
  • Memory Usage 2,167KB
  • 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
  • (3)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (2)post_thanks_box
  • (2)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit_info
  • (2)postbit
  • (2)postbit_onlinestatus
  • (2)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