我使用标准的preg_match来制作网址
http://domainlllll.com/
它没有任何问题
preg_match("/^[0-9a-z_\/.\|\-]+$/",$url)
但现在我想支持多种语言,所以我使用了它,它也没有任何问题
preg_match("/\S+/",$url)
我的网址是
link/kn/some-word-গরম-এবং-সেক্সি-ইমেজ/611766
但我想排除一些黑客最喜欢的特殊字符,如单引号和其他字符。我不想排除所有特殊字符,因为很少有语言的一部分,它会在链接中破坏这些语言
任何指南都会很棒
答案 0 :(得分:0)
看,/^[0-9a-z_\/.\|\-]+$/
正则表达式要求整个字符串与定义的范围(数字,小写ASCII字母)和集合中的模式,1 +字符匹配。 /\S+/
正则表达式不需要完整的字符串匹配,因为没有锚点^
(字符串的开头)和$
(字符串的结尾),并且匹配1个或更多非空格字符串中的任何地方都有字符。
如果您计划匹配仅包含非空白符号而非引号的字符串,请使用
preg_match('~^[^\s\'"]+$~', $url)
^[^\s\'"]+$
匹配
^
- 字符串开头[^\s\'"]+
- 除了空格(\s
),'
和"
$
- 字符串结尾(如果您需要验证字符串,请更好地使用\z
。)