我有一个接受来自 PHP 用户的 URL 的表单。
我应该允许或禁止哪些字符?目前我使用
$input= preg_replace("/[^a-zA-Z0-9-\?:#.()\,/\&\'\\"]/", "", $string);
$输入=子字符串($输入,0,255);
因此,它被修剪为 255 个字符,并且只能包含字母、数字和 ? - _ : # ( ) , & ' " /
有哪些我应该剥离而没有剥离的内容,或者我要剥离的任何内容可能需要位于有效的 URL 中?
RFC 1738 http://www.ietf.org/rfc/rfc1738.txt它定义了 URL 规范,规定只有字符
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+.-
可以在 URL 方案中使用,并且只能使用字符
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),;/?:@=&
可以在 URL 的特定于方案的部分中以未编码的方式使用。 (;/?:@=&
,如果未编码使用,则必须用于其“保留目的”,但如果您只是检查无效字符,则无需担心这一点)。因此,如果您想要完整的通用性,我会根据此正则表达式检查 URL:
"/([a-zA-Z+.-]+:\/\/)?([a-zA-Z0-9\$\-_\.\+\!\*'\(\),\;\/\?\:\@\=\&]+)/"
(可能其中一些转义是不必要的)。如果您只寻找 HTTP URL,(某些)其他答案应该没问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)