我如何编写一个正则表达式来用它的文件夹路径替换任何文件名,但不匹配 url?并且不会匹配 in url?例如它应该匹配:
/images/something.png
content/scripts/myscript.js
image.gif
/1.jpg
但应该不匹配:
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
谢谢...
最佳答案
我认为这是不可能的,因为这也是一个有效的目录名称?
www.google.com/scripts/myscript.js
我猜只有 http://可以被过滤。
我不知道你打算做什么,但也许你可以使用 file_exists() 来检查它是否是你文件系统上的文件。
this question告诉我们如何使用正则表达式过滤 url:
$text = preg_replace("
#((http|https|ftp)://(\S*?\.\S*?))(\s|\;|\)|\]|\[|\{|\}|,|\"|'|:|\<|$|\.\s)#ie",
"'<a href=\"$1\" target=\"_blank\">$3</a>$4'",
$text
);
但它还声明您实际上应该使用 filter_var() 函数
var_dump(filter_var('example.com', FILTER_VALIDATE_URL);
关于php - 文件名的正则表达式,没有 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1660191/