I had been looking on the Internet for a solution to a program I had be working on and sadly didn’t come up with one. I was trying to find a way to use regular expressions to find all the html anchor tags in a string along with matching a wild card URL (ie: secnem.com.*test.html). And after many hours of thrusting my head into my keyboard I came up with:

/<a [^><]*href=[\”\’][^\”\’><]*<rule>[^\”\’><]*[\”\’][^>]*>\s*.*\s*<\/a>/iU

You’d replace <rule> with what ever url rule you want, except for any wild cards in the url I needed to use [^\”\’><]* instead of just .* . This would prevent it from matching outside of the anchor. Bascially [^\”\’><]*  means: match any character except a double quote, single quote, greater than sign, or less than sign. All of which should not be in the href field to begin with.

If you wanted to see what the content of the anchor tag was or the matched href, simply put some brackets around like so:

/<a [^><]*href=[\”\’]([^\”\’><]*<rule>[^\”\’><]*)[\”\’][^>]*>(\s*.*\s*)<\/a>/iU

Hope this helps someone. You can of course adapt this to other html tags by replacing ‘a’ for ‘table’ or w/e. Same with the href. larsolavtorvik.com has a great resource for testing regex in real time and addedbytes.com has a great cheat sheet as well.

Previous ArticleNext Article
B.

Bulk Add IP Addresses

I do a lot of local development with Internet Information Services and either ColdFusion, PHP or ASP.net and for the longest time I would actually run the websites on separate ports on 127.0.0.1.

Unfortunately running multiple websites on various other ports causes some issues like:

  • Port conflicts with other programs
  • Remembering which port is used for what website
  • Causes problems with some websites that look for port 80
  • Doesn’t really work with SSL (port 443)

So what I started doing was running my websites on separate private IP addresses which are local to my machine only, and this worked GREAT! I could load up websitexyz, bind it to IP 1.1.1.10, setup SSL to work on port 443 for 1.1.1.10 and I would go about my business.

The only downside was when I would run out of IP addresses, because I would only add about 5 to 10 IPs at a time to my local loopback adapter. It is a bit of a pain in the butt to add a bunch of IP addresses in Windows, so it would take me a bit of time to do this everytime I needed more IPs.

That was until I ran into a small batch script which can add as many IP addresses as I want in a range.

Here’s the code:

FOR /L %A IN (41,1,100) DO netsh interface ipv4 add address “ColdFusion-IIS” 1.1.1.%A 255.255.255.0

Simply copy that into either a command prompt or a .bat file and run it to add as many IP addresses in a range that you want.

Here’s the break down of the script:

FOR /L %A IN (START,INCREMENT,END) DO netsh interface ipv4 add address “INTERFACE_NAME” IPMASK SUBNET

If we take a look at my script above we see that

  • START = 41
  • INCREMENT = 1
  • END = 100
  • INTERFACE_NAME = ColdFusion-IIS
  • IPMASK = 1.1.1.%A
  • SUBNET = 255.255.255.0

What this basically equates to is adding 1.1.1.41 to 1.1.1.100 to my network adapter called ColdFusion-IIS.
It is a super handy script and saved me a bunch of time, I would recommend it 10/10 for local development.
T.

The Indestructible M200

I’ve already written a few articles about my tablet laptop, the Toshiba M200, and I’ve been incredible impressed by it’s durability, adaptability, and overall functionality. So what have I forced it to do now? What other feat has the M200 surpassed? Two words: Windows 7. I decided to install Windows 7 RC 1 on my tablet for a few reasons, including: It’s free, … it’s free, and… I have a SSD. So far I’m quite impressed at the tablet’s ability to run Windows 7; the actions are very smooth, it’s responsive, fast in booting up and loading applications. The only thing I’ve noticed so far is that Aero doesn’t work at all, even if I try forcing it to start Aero I end up having to reboot as the screen just gets stuck in an endless flicker. But I can live with no Aero, considering it’s overall functionality is awesome.