3

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...

Alon Gubkin
  • 56,458
  • 54
  • 195
  • 288

1 Answers1

5

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);
Community
  • 1
  • 1
NDM
  • 6,731
  • 3
  • 39
  • 52