preg_match将url与多种语言匹配

时间:2017-06-30 18:44:41

标签: preg-match

我使用标准的preg_match来制作网址

  http://domainlllll.com/

它没有任何问题

  preg_match("/^[0-9a-z_\/.\|\-]+$/",$url)

但现在我想支持多种语言,所以我使用了它,它也没有任何问题

   preg_match("/\S+/",$url)

我的网址是

link/kn/some-word-গরম-এবং-সেক্সি-ইমেজ/611766

但我想排除一些黑客最喜欢的特殊字符,如单引号和其他字符。我不想排除所有特殊字符,因为很少有语言的一部分,它会在链接中破坏这些语言

任何指南都会很棒

1 个答案:

答案 0 :(得分:0)

看,/^[0-9a-z_\/.\|\-]+$/正则表达式要求整个字符串与定义的范围(数字,小写ASCII字母)和集合中的模式,1 +字符匹配。 /\S+/正则表达式不需要完整的字符串匹配,因为没有锚点^(字符串的开头)和$(字符串的结尾),并且匹配1个或更多非空格字符串中的任何地方都有字符。

如果您计划匹配仅包含非空白符号而非引号的字符串,请使用

preg_match('~^[^\s\'"]+$~', $url)

^[^\s\'"]+$匹配

  • ^ - 字符串开头
  • [^\s\'"]+ - 除了空格(\s),'"
  • 之外的1个或多个字符
  • $ - 字符串结尾(如果您需要验证字符串,请更好地使用\z。)