【发布时间】:2013-06-03 16:34:09
【问题描述】:
我需要检查一个字符串是否是有效的域名或主机地址。这是因为我需要阻止来自给定字符串的所有不友好的命令。
一个通用的解决方案可能是 ping 给定地址并查看它是否响应,但不幸的是,在我的情况下,这不是一个选项。
我认为可能的字符是 A-Z、a-z、所有数字和点 '.'所以 preg_match 函数可能是一种方法。我对正则表达式的了解几乎为零,但我设法找出以下行来检查除点之外的所有内容。
preg_match("/([a-zA-Z0-9])/", $mystring);
那么你们能帮我找出正确的正则表达式语法来允许上面提到的字符吗?或者,如果您想出一个更好的解决方案来阻止可能的安全问题(字符串最终会出现在 shell_exec 函数中,因此非常关键),请将其吐出。谢谢! :)
编辑:因此可能的输入例如是典型的 IP 地址:123.123.123.123 或域名 mydomain.com 或 corp.mydomain.xx.com。点数不是恒定的。
【问题讨论】:
-
显示您将收到的数据格式示例。喜欢 111.111.111.111
-
你可以使用
filter_var($url, FILTER_VALIDATE_URL)。 -
可能的输入示例:典型的 ip 地址:111.111.111.111,域名:somestring.computername.com 或 computername.com
-
...点数不固定