vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   Properly Encoding URL that contain spaces (https://vborg.vbsupport.ru/showthread.php?t=277488)

vantastic 01-24-2012 08:35 PM

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

nerbert 01-24-2012 10:23 PM

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.

vantastic 01-24-2012 10:53 PM

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 :)

kh99 01-24-2012 11:19 PM

There is a {vb:urlencode variable} that may do what you want.

vantastic 01-24-2012 11:35 PM

kh99

so VERY close! It's substituting spaces with "+" instead of %20

kh99 01-24-2012 11:51 PM

Yeah, it calls urlencode() which connverts special characters to %XX except spaces, which get changed to + for some reason. Oh well...

nerbert 01-25-2012 12:37 AM

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.


All times are GMT. The time now is 04:13 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.01167 seconds
  • Memory Usage 1,723KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (4)bbcode_code_printable
  • (2)bbcode_html_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (7)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete