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

Reply
 
Thread Tools Display Modes
  #1  
Old 01-24-2012, 08:35 PM
vantastic vantastic is offline
 
Join Date: Oct 2010
Posts: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Properly Encoding URL that contain spaces

Hello

I'm trying to figure out a way to encode url's that contain spaces. Normally I'd manually type %20 as needed, however what I'm doing is part of a form that creates a thread. Allow me to explain.

A user fills out a form with their country, the form is submitted and the variable is pulled for the country to show the flag. The code is something like this:

Code:
[img]http://test.com/images/flags/{qo_01}.png[/img]

If the country is more than one word then problems start to happen. The resulting output code is something like this.

Code:
[img][url]http://test.com/images/flags/United[/url] States
Notice its all broken because it auto-parses the url and breaks at the first space character. Actually it's a lot worse at the beginning it will include actual HTML for the [img] bbcode, but for demonstrative purposes, this is the part that concerns me.

It should be:

Code:
[img]http://test.com/images/flags/United%20States.png[/img]

The variable {qo_01} needs to have any spaces substituted with the %20 characters.

I know how to do this in php, but is there some inline <vb: xx> function that can help? I've thought about BBCode for it too, but haven't tried anything.

Thanks in advance!

Van
Reply With Quote
  #2  
Old 01-24-2012, 10:23 PM
nerbert nerbert is offline
 
Join Date: May 2008
Posts: 784
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Suppose you have someting like this:

HTML Code:
<input type="text" id="countryname" />

<input type="submit" value="Submit" />
Add an onclick to the submit button like this

HTML Code:
<input type="submit" value="Submit" onclick="encode()" />
Code:
<script type="text/javascript">
<!--
        function encode() {
               var counrtyname = fetch_object('countryname').value;
               countryname=PHP.urlencode(countryname);
               fetch_object('countryname').value=countryname;
        }
//-->
</script>
I think that would do it.
Reply With Quote
  #3  
Old 01-24-2012, 10:53 PM
vantastic vantastic is offline
 
Join Date: Oct 2010
Posts: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi nerbert

Thanks for the response. I was hoping I didn't have to modify any templates as this would affect future updates of the mod I need it for (https://vborg.vbsupport.ru/showthread.php?t=234385)

I guess I just need to bite the bullet...

thanks
Reply With Quote
  #4  
Old 01-24-2012, 11:19 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

There is a {vb:urlencode variable} that may do what you want.
Reply With Quote
  #5  
Old 01-24-2012, 11:35 PM
vantastic vantastic is offline
 
Join Date: Oct 2010
Posts: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

kh99

so VERY close! It's substituting spaces with "+" instead of %20
Reply With Quote
  #6  
Old 01-24-2012, 11:51 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yeah, it calls urlencode() which connverts special characters to %XX except spaces, which get changed to + for some reason. Oh well...
Reply With Quote
  #7  
Old 01-25-2012, 12:37 AM
nerbert nerbert is offline
 
Join Date: May 2008
Posts: 784
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Try encodeURI() instead of PHP.urlencode().

http://www.w3schools.com/jsref/jsref_encodeuri.asp

PHP.urlencode() is a vBulletin function and it seems to be the opposite of urldecode() in PHP.
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 02:07 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.04111 seconds
  • Memory Usage 2,214KB
  • Queries Executed 11 (?)
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
  • (4)bbcode_code
  • (2)bbcode_html
  • (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_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