【问题标题】:preg_match to match url with multiple languagespreg_match 将 url 与多种语言匹配
【发布时间】:2017-07-01 03:04:45
【问题描述】:

我使用标准 preg_match 来制作不包括

的 url
  http://domainlllll.com/

它运行没有任何问题

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

但现在我想支持多种语言,所以我使用了这个,它也可以正常工作

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

我的网址是

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

但我想排除一些黑客最喜欢的特殊字符,如单引号等。我不想排除所有特殊字符,因为少数语言属于少数语言,它会破坏链接中的这些语言

任何指南都会很棒

【问题讨论】:

标签: preg-match


【解决方案1】:

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

如果您打算匹配仅包含非空白符号且不包含引号的字符串,请使用

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多