URL encoding/decoding Macros?

Help with writing and playing macros

URL encoding/decoding Macros?

Postby Ghoulardi » Thu Oct 25, 2007 2:40 am

:?:

For URL encoding, Is there an easy way to do this?, maybe a macro someones already made and can share? Or, do I atleast have the right idea on how to make it?

I want to take a link like this...

Code: Select all
http://search.ebay.com/search/search.dll?sofocus=bs&sbrftog=1&from=R10&satitle=G4+apple+software&sacat=-1%26catref%3DC6&sargn=-1%26saslc%3D2&sadis=200&fpos=44870&sabfmts=1&ftrt=1&ftrv=1&saprclo=&saprchi=&fsop=1%26fsoo%3D1&coaction=compare&copagenum=1&coentrypage=search&fgtp=


and end up with something like this... (and another macro to do vice versa)

Code: Select all
http%3A%2F%2Fsearch.ebay.com%2Fsearch%2Fsearch.dll%3Fsofocus%3Dbs%26sbrftog%3D1%26from%3DR10%26satitle%3DG4%2Bapple%2Bsoftware%26sacat%3D-1%2526catref%253DC6%26sargn%3D-1%2526saslc%253D2%26sadis%3D200%26fpos%3D44870%26sabfmts%3D1%26ftrt%3D1%26ftrv%3D1%26saprclo%3D%26saprchi%3D%26fsop%3D1%2526fsoo%253D1%26coaction%3Dcompare%26copagenum%3D1%26coentrypage%3Dsearch%26fgtp%3D


Maybe by replacing the symbols like (replace : with %3A ,replace / %2F ,and etc. etc.)

It would probably take me a long time to make a macro and I'm not sure it could even be done so I appreciate any advice. Do I have the right idea to make it?

more on URL encoding...
http://www.blooberry.com/indexdot/html/ ... coding.htm
User avatar
Ghoulardi
Basic User
Basic User
 
Posts: 20
Joined: Thu Dec 14, 2006 12:00 am

Re: URL encoding/decoding Macros?

Postby jorrasdk » Thu Oct 25, 2007 6:32 am

You don't write which version of UE you use, but if you use version 13 and above the most easy solution is a script using the javascript encodeURIComponent function:

Example: Select the URI (the link) in your editor and run the script:

Code: Select all
/* get selected text in the active file */
var line = UltraEdit.activeDocument.selection;

/* URI encode string */
line = encodeURIComponent(line);

/* write line back on top of selection */
UltraEdit.activeDocument.write(line);
User avatar
jorrasdk
Master
Master
 
Posts: 275
Joined: Mon Mar 19, 2007 11:00 pm
Location: Denmark

Re: URL encoding/decoding Macros?

Postby Mofi » Thu Oct 25, 2007 6:59 am

In the Advanced toolbar profile there is the HTML toolbar which contains the function HTML Encode/Decode. This can be also used. But note: It encodes the selection completely including the letters and numbers and not only all other characters.
User avatar
Mofi
Grand Master
Grand Master
 
Posts: 4042
Joined: Thu Jul 29, 2004 11:00 pm
Location: Vienna

Re: URL encoding/decoding Macros?

Postby Ghoulardi » Thu Oct 25, 2007 1:40 pm

Thank you jorrasdk but I should have told you I am using v 12 of UE. I should probably upgrade.

Mofi, That's great and I didnt know about it but I just wish it had another option to just encode/decode special characters.
UE is the greatest along with the forum members.

Thanks guys so much.
User avatar
Ghoulardi
Basic User
Basic User
 
Posts: 20
Joined: Thu Dec 14, 2006 12:00 am

Re: URL encoding/decoding Macros?

Postby jorrasdk » Thu Oct 25, 2007 2:24 pm

Ok with a macro you will have a number of search/replaces - this takes care of the most frequent characters that needs to be encoded. It selects from the cursor position to the end of the line:

Code: Select all
InsertMode
ColumnModeOff
HexOff
UnixReOff
StartSelect
Key END
Find "%"
Replace All SelectText "%25"
Find "@"
Replace All SelectText "%40"
Find ";"
Replace All SelectText "%3B"
Find "?"
Replace All SelectText "%3F"
Find "/"
Replace All SelectText "%2F"
Find ":"
Replace All SelectText "%3A"
Find "#"
Replace All SelectText "%23"
Find "&"
Replace All SelectText "%24"
Find "="
Replace All SelectText "%3D"
Find "+"
Replace All SelectText "%2B"
Find "$"
Replace All SelectText "%26"
Find ","
Replace All SelectText "%2C"
Find " "
Replace All SelectText "%20"
Find "<"
Replace All SelectText "%3C"
Find ">"
Replace All SelectText "%3E"
Find "~"
Replace All SelectText "%7E"
User avatar
jorrasdk
Master
Master
 
Posts: 275
Joined: Mon Mar 19, 2007 11:00 pm
Location: Denmark

Re: URL encoding/decoding Macros?

Postby Ghoulardi » Thu Oct 25, 2007 3:02 pm

Thank you very much for taking the time to make this Jorrasdk.
It works perfectly! You guys are the best!
User avatar
Ghoulardi
Basic User
Basic User
 
Posts: 20
Joined: Thu Dec 14, 2006 12:00 am

Re: URL encoding/decoding Macros?

Postby Ghoulardi » Thu Dec 27, 2007 9:00 am

Is there anyone who can tell me the simplest way to use this macro to encode only the urls in a file and not mess with any of the other coding?

I have this huge file with thousands of urls and lots of coding in it.
All the urls are totally different but they all have one thing in common.

They all begin with (' and end with ')

example: ('http://www.google.com/search?q=ultraedit')

So would I be able to have it only change whats between the (' and the ') or some way to do it by editing the macro and using something like ('^(*^)') but I have no idea how?

Im still on UE version 12. Any ideas?
User avatar
Ghoulardi
Basic User
Basic User
 
Posts: 20
Joined: Thu Dec 14, 2006 12:00 am

Re: URL encoding/decoding Macros?

Postby jorrasdk » Thu Dec 27, 2007 10:01 am

Ok, let's assume you have named the macro above encode. Next create the macro in the following and name it findurls:

InsertMode
ColumnModeOff
HexOff
Top
Loop
PerlReOn
Find RegExp "
\('(?:https|http|ftp)[^']+'\)"
IfFound
PlayMacro 1 "encode"
Else
ExitLoop
EndIf
EndLoop
Top


The red part is a Perl regular expression *) that selects an embedded URL with the pattern you described. To be sure it only finds URLs the regular expression only selects what seems to be URLs starting with https,http or ftp. Add more of these if you use other protocols for URLs (or rather URI's).

*) UE version always matters, so since you wrote you use version 12, I was able to use a Perl regular expression which is more powerful than UE or Unix style regular expressions.
User avatar
jorrasdk
Master
Master
 
Posts: 275
Joined: Mon Mar 19, 2007 11:00 pm
Location: Denmark

Re: URL encoding/decoding Macros?

Postby Ghoulardi » Thu Dec 27, 2007 11:49 am

Thanks so much Jorrasdk, I use that original macro you created a lot!!
I'm not sure what I am doing wrong with this one, unfortunately it's not working for me. I renamed the original to encode and the new one to findurls, then loaded them both and ran findurls. I tried many times but the page seems to jump like it trys to do something but Nothing happened.

Another thing I wanted to add, if it matters, is that there are lots of ( ) and lots of ' ' in this file but the only (' ') are the ones before and after the URLs
so I'm not sure if searching for https|http|ftp is needed. Isn't there a way to just search for everything between (' ') ?

I hope that I made sense there.

I did spend a long time searching the forum for an answer before I bumped this thread by asking so I hope you don't think I only come for an easy answer. I realy appreciate the help you guys give. Thanks again!
User avatar
Ghoulardi
Basic User
Basic User
 
Posts: 20
Joined: Thu Dec 14, 2006 12:00 am

Re: URL encoding/decoding Macros?

Postby jorrasdk » Thu Dec 27, 2007 12:38 pm

Ok, then we need to see an example of your actual data - please supply information as described in section 4 and 5 of the thread Help for new forum members - read this before post anywhere!

it could be the data, or that my macro tested on 13.20a doesn't work on your version 12.??? something because of not supported commands or bugs fixed in later UE versions. But I would like to try the macros on your actual data.
User avatar
jorrasdk
Master
Master
 
Posts: 275
Joined: Mon Mar 19, 2007 11:00 pm
Location: Denmark

Re: URL encoding/decoding Macros?

Postby Ghoulardi » Thu Dec 27, 2007 1:01 pm

Thank you!

Yeah, it's probably time for me to upgrade. I will definatley have to look into it.

This is just two lines from my file(not working links), times it by almost 4000 and thats what it looks like. 8O

Code: Select all
<menuit id="77688" label="PC &#38; V" oncommand="srchau881281();"/>
<menuit id="50201" label="Deskt" oncommand="LoadPage('http://google.com//11006159695/1108274&#38;2264263&QQlogZ0QQsacatZ3736QQsrgnZsaliQQsocmdZ');"/>
<menuit id="50202" label="Input Peripherals'" oncommand="LoadPage('http://google.com/1/71006159695/1?=226463&#38;atZ3676QsargnZsalicQQsocmdZ');"/>
User avatar
Ghoulardi
Basic User
Basic User
 
Posts: 20
Joined: Thu Dec 14, 2006 12:00 am

Re: URL encoding/decoding Macros?

Postby jorrasdk » Thu Dec 27, 2007 1:21 pm

Ok, I tested my macro on too simple test data. With your proper example I found some problems:

Alter encode to

Code: Select all
ColumnModeOff
HexOff
Find "%"
Replace All SelectText "%25"
Find "@"
Replace All SelectText "%40"
Find ";"
Replace All SelectText "%3B"
Find "?"
Replace All SelectText "%3F"
Find "/"
Replace All SelectText "%2F"
Find ":"
Replace All SelectText "%3A"
Find "#"
Replace All SelectText "%23"
Find "&"
Replace All SelectText "%24"
Find "="
Replace All SelectText "%3D"
Find "+"
Replace All SelectText "%2B"
Find "$"
Replace All SelectText "%26"
Find ","
Replace All SelectText "%2C"
Find " "
Replace All SelectText "%20"
Find "<"
Replace All SelectText "%3C"
Find ">"
Replace All SelectText "%3E"
Find "~"
Replace All SelectText "%7E"


and alter findurls to

Code: Select all
InsertMode
ColumnModeOff
HexOff
UnixReOff
Top
Loop
Find RegExp "('*')"
IfFound
PlayMacro 1 "encode"
Else
ExitLoop
EndIf
EndLoop
Top


I have taken Perl RegExp out of the equation and now use a very simple UE style RegExp: ('*')
User avatar
jorrasdk
Master
Master
 
Posts: 275
Joined: Mon Mar 19, 2007 11:00 pm
Location: Denmark

Re: URL encoding/decoding Macros?

Postby Ghoulardi » Fri Dec 28, 2007 1:25 am

It's perfect! Thank you so much jorrasdk! I wish you the best and Happiest New Year!!

:lol: :wink: :D


PS. My New Year resolution is to Update UE and learn more!
User avatar
Ghoulardi
Basic User
Basic User
 
Posts: 20
Joined: Thu Dec 14, 2006 12:00 am


Return to Macros