PHP 正则表达式替换为数字和字符不为空


php regex replacing with number and character not null

我试图从 uri 中转义除字母、数字、- 和/之外的所有内容,所以我在下面制作了正则表达式并将其放入 preg_replace 函数中。但是,如果我输入类似 /dir/anotherDir<?<<<?> 的东西,它不会将其删除为 null,它会用 3C 替换大于和小于,3E我该如何解决这个问题?

$uriPath = htmlentities($uriPath);
$patterns = array('/[^a-zA-Z0-9'.'-'/]/', '/'.+/', '/'.+'//', '/'.+'.+'//');
$uriPath = preg_replace($patterns, '', $uriPath);

我最终在路径上使用rawurldecode(),这使一切按预期工作。这是因为它将%20之类的东西转换回空间。