我试图从 uri 中转义除字母、数字、- 和/之外的所有内容,所以我在下面制作了正则表达式并将其放入 preg_replace
函数中。但是,如果我输入类似 /dir/anotherDir<?<<<?>
的东西,它不会将其删除为 null,它会用 3C
替换大于和小于,3E
我该如何解决这个问题?
$uriPath = htmlentities($uriPath);
$patterns = array('/[^a-zA-Z0-9'.'-'/]/', '/'.+/', '/'.+'//', '/'.+'.+'//');
$uriPath = preg_replace($patterns, '', $uriPath);
我最终在路径上使用rawurldecode()
,这使一切按预期工作。这是因为它将%20
之类的东西转换回空间。