views:

206

answers:

1

How can I write a regex which will replace any file name, with it's folder path, but wouldn't match url? and wouldn't match in url? For example it should match:

/images/something.png
content/scripts/myscript.js
image.gif
/1.jpg

But should not match:

http://www.google.com/images/something.png
www.google.com/scripts/myscript.js
http://site.com/?img=/image.png
http://site.com/?img=/scripts/somescript.js

Thanks...

+5  A: 

I think this is imposible since this is also a valid directory name?

www.google.com/scripts/myscript.js

I guess only http:// could be filtered.

I don't know what you're planning to do, but maybe you could use file_exists() to check if it's a file on ur filesystem.

this question tells us how to filter a url with regex:

$text = preg_replace("
  #((http|https|ftp)://(\S*?\.\S*?))(\s|\;|\)|\]|\[|\{|\}|,|\"|'|:|\<|$|\.\s)#ie",
  "'<a href=\"$1\" target=\"_blank\">$3</a>$4'",
  $text
);

but it also states that you actually should use the filter_var() function

var_dump(filter_var('example.com', FILTER_VALIDATE_URL);
Nicky De Maeyer
well say it's not a vaild directory name.
TTT
Alon, you'll first have to provide a definition of an invalid directory is (in your book). We can't read your mind. Is a directory invalid when it has two `.`'s in it? Is it invalid when it ends with `.com`? Etc. etc.
Bart Kiers
www.google.com is a valid directory name on Windows 95 (!) and newer, and on all modern Unix-y systems (OS X, Linux) also.
Piskvor
And `configure.ac` is a file or a URI? In the real world it is both...
ntd
How can it filtered with http://?
TTT