Re: [SOLVED] need some regex help to strip out // comments but not http:// urls

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 29, 2013 at 4:26 PM, Daevid Vincent <daevid@xxxxxxxxxx> wrote:
>
>
>> -----Original Message-----
>> From: Sean Greenslade [mailto:zootboysean@xxxxxxxxx]
>> Sent: Wednesday, May 29, 2013 10:28 AM
>>
>> Also, (I haven't tested it, but) I don't think that example you gave
>> would work. Without any sort of quoting around the "http://";
>> , I would assume the JS interpreter would take that double slash as a
>> comment starter. Do tell me if I'm wrong, though.
>
> You're wrong Sean. :-p

Glad to hear it. I knew I shouldn't have opened my mouth. =P
(In all seriousness, I realize that I mis-read that code earlier. I
think I was still reeling from the suggestion of doing arbitrary
string replacements in files.)

>
> This regex works in all cases listed in my example target string.
>
> \s*(?<!:)//.*?$
>
> Or in my actual compress() method:
>
> $sBlob = preg_replace("@\s*(?<!:)//.*?$@m",'',$sBlob);
>
> Target test case with intentional traps:
>
> // another comment here
> <iframe src="http://foo.com";>
> function bookmarksite(title,url){
>     if (window.sidebar) // firefox
>         window.sidebar.addPanel(title, url, "");
>     else if(window.opera && window.print){ // opera
>         var elem = document.createElement('a');
>         elem.setAttribute('href',url);
>         elem.setAttribute('title',title);
>         elem.setAttribute('rel','sidebar');
>         elem.click();
>     }
>     else if(document.all)// ie
>         window.external.AddFavorite(url, title);
> }
>

And if that's the only case you're concerned about, I suppose that
regex will do just fine. Just always keep an eye out for double
slashes elsewhere. My concern would be something within a quoted
string. If that happens, no regex will save you. As I mentioned
before, regexes aren't smart enough to understand whether they're
inside or outside matching quotes. Thus, a line like this may get
eaten by your regex:
document.getElementById("textField").innerHTML = "Lol slashes // are // fun";

The JS parser sees that the double slashes are inside a string, but
your regex won't. Just something to be aware of, especially because
it's something that might not show up right away.

-- 
--Zootboy

Sent from some sort of computing device.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php





[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux